2013-04-19 55 views
9

Tôi đã một ListActivity mà tôi muốn thay đổi mục chiều cao tham khảo chiều cao thiết bịlàm thế nào để thiết lập mục ListView chiều cao

public class MainActivity extends ListActivity 
{ 
      . 
      . 
      . 
      setListAdapter(new ArrayAdapter<String>(MainActivity.this, 
       android.R.layout.simple_list_item_1,mainMenuItems)); 
} 

nó ListActivity tôi trên Galaxy Nexus S:

enter image description here

và trên galaxy nexus 7: enter image description here

Tôi nên xác định chiều cao mục danh sách xem như thế nào ???

Trả lời

20

Chiều cao mục ListView là chiều cao của nội dung bố cục mục, ví dụ: chiều cao android.R.layout.simple_list_item_1. Nếu bạn muốn chiều cao khác nhau, hãy tạo một tệp xml và đặt thuộc tính layout_height hoặc minHeight.

Đây là một simple_list_item_1 sửa đổi trong đó đề cập đến giá trị của bạn

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceListItemSmall" 
    android:gravity="center_vertical" 
    android:paddingStart="?android:attr/listPreferredItemPaddingStart" 
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" 
    android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" 
    android:paddingRight="?android:attr/listPreferredItemPaddingRight" 
    android:minHeight="@dimen/your_defined_minumum_height"/> 

và trong dimen.xml bạn

<dimen name="your_defined_minumum_height">48dp</dimen> 
3

Bạn cần tạo tệp bố cục tùy chỉnh của riêng mình cho mỗi mục trong ListView. Ở đó bạn có thể chỉnh sửa bất cứ điều gì bạn muốn, và bạn có thể nhận được rất nhiều lợi ích.

5
ListView lvLogs = new ListView(this); 
lvLogs.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, logs) { 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View view = super.getView(position, convertView, parent); 
      TextView textView = ((TextView) view.findViewById(android.R.id.text1)); 
      textView.setMinHeight(0); // Min Height 
      textView.setMinimumHeight(0); // Min Height 
      textView.setHeight(44); // Height 
      return view; 
     } 
    }); 

Lưu ý: minheight và MinimumHeight được yêu cầu !!!

Đặt chiều cao tối thiểu 0 ~ 20 (hoặc cao hơn): setMinHeight(?) + setMinimumHeight(?)

Sau đó, TextView trong ListView sẽ có chiều cao bình thường (nhỏ hơn so với mặc định của ListView)

Nếu bạn muốn cụ thể chiều cao tính bằng pixel, sau đó sử dụng setHeight(?)

0

Tùy chỉnh bộ điều hợp cho ListView của bạn với thông tin về màn hìnhHeight (H). Do bạn muốn màn hình hiển thị 9 cột (mục), bạn có thể chỉ định chiều cao của mỗi cột là H/9. Bằng cách đó, bạn có thể kiểm soát chính xác diện mạo của ListView của bạn bất kể loại thiết bị nào.

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