2013-08-01 40 views
5

Tôi vừa cập nhật SDK Android lên phiên bản 18 và sửa đổi dự án mà tôi đang làm việc để sử dụng thay vì phiên bản 17. Hóa ra là ListView có vẻ khác nhiều. Tuy nhiên, chỉ cần chuyển targetSdkVersion từ 18 sang 17 bên trong tệp kê khai sẽ làm cho nó trở lại ngay.Bố cục mục ListView khác giữa targetSdkVersion = "17" và targetSdkVersion = "18"

tôi quản lý để tạo lại vấn đề bằng cách tạo ra một dự án Android mới trong Eclipse và thay đổi hoạt động chính để thực hiện ListActivity cơ bản nhất có thể:

public class MainActivity extends ListActivity { 

    private static final String[] listItems = new String[] { "list item 1", "list item 2"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.text, listItems)); 
    } 

} 

File list_item.xml chứa sau:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="match_parent" 
     android:layout_height="100dip" 
     android:background="#ff0000" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignBottom="@id/text" 
     android:layout_alignTop="@id/text" 
     android:background="#88ffffff" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:background="#8c0000ff" 
      android:text="@string/button1" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="20dip" 
      android:background="#8c00ff00" 
      android:text="@string/button2" /> 
    </LinearLayout> 

</RelativeLayout> 

Có LinearLayout trên TextView là cố ý. Tôi muốn sử dụng LinearLayout làm lớp phủ và hiển thị/ẩn nó khi cần thiết.

Bây giờ, khi tôi đặt targetSdkVersion bên trong tệp AndroidManifest.xml thành 17, mọi thứ hoạt động như mong đợi, có nghĩa là các nút khớp với chiều cao của LinearLayout. Tuy nhiên, khi tôi chuyển phiên bản sang 18, chúng hoạt động như thể chúng đã sử dụng "wrap_content". Tại sao tôi nhận được hành vi kỳ lạ này và làm thế nào tôi có thể sửa chữa nó để làm việc như trong SDK 17?

+1

Tôi gặp vấn đề tương tự với Xem chiều cao. Tôi ko có ý tưởng nào để sửa nó. Tôi sẽ ở lại với cấp api 17 – passsy

Trả lời

0

Điều này có vẻ rất lạ đối với tôi. LinearLayout của bạn không cần bố cục thuộc tính layout_alignBottom/layout_alignTop như xa như tôi có thể thấy, nhưng xóa các dòng này và LinearLayout cũng hiển thị sai. Cách duy nhất tôi có thể có được những gì tôi tin là kết quả bạn muốn trong thử nghiệm của tôi là để xóa alignTop/alignBottom (vì đây dường như không cần thiết) từ LinearLayout của bạn và thêm dòng:

android:minHeight="100dip" 

Hope this helps.

Các vấn đề liên quan