Tôi đã tạo một Ứng dụng Android trong đó tôi sử dụng một ListView. ListView bao gồm các mục danh sách CheckedTextView. Hoạt động của tôi chứa EditText ở trên cùng, một TextView bên dưới và một Nút ở dưới cùng. Khoảng cách giữa TextView và nút là khu vực bị chiếm bởi ListView. Bây giờ, vì ListView của tôi chứa khá ít mục, toàn bộ không gian của ListView không bị chiếm bởi chúng. Ngoài ra không gian còn lại rõ ràng là khác nhau giữa các thiết bị. Những gì tôi muốn biết là nếu có một cách để thay đổi chiều cao hàng của ListView để toàn bộ không gian được phân bổ cho ListView được bảo hiểm. Và cũng có thể xảy ra nếu cần phải thêm một số mặt hàng, chiều cao hàng có thể tự điều chỉnh cho phù hợp. Tôi đã cung cấp một số đoạn mã bên dưới để dễ hiểu Giao diện của tôi giống như thế nào.Tự động thay đổi chiều cao hàng trong một listview dựa trên số lượng các mục danh sách
activity_main.xml
<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="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#D0D0D0"
tools:context=".MainActivity" >
<Button
android:id="@+id/addcourse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Add Course" />
<EditText
android:id="@+id/coursenameet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:ems="10"
android:layout_marginBottom="2dp"
android:layout_marginTop="2dp"
android:hint="Course Name"
android:inputType="textCapWords" >
<requestFocus />
</EditText>
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_below="@+id/coursenameet"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:background="@android:color/darker_gray" >
</View>
<TextView
android:id="@+id/weekdaytv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/divider"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"
android:layout_centerHorizontal="true"
android:text="Select weekdays for this Course" >
</TextView>
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/addcourse"
android:layout_below="@+id/weekdaytv"
android:divider="#FFFFFF"
android:dividerHeight="2px">
</ListView>
</RelativeLayout>
Các mặt hàng được CheckedTextViews được triển khai bằng BaseAdapter. The View phương pháp của lớp BaseAdapter là
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
int colorpos = position % colors.length;
if(v == null){
LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.listviewitem, null);
}
CheckedTextView newrow = (CheckedTextView) v.findViewById(R.id.checkedtextview);
v.setBackgroundColor(colors[colorpos]);
newrow.setTextColor(Color.BLACK);
newrow.setText(items[position]);
return v;
}
EDIT: Snippet từ Hoạt động chính
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
adapter = new ItemsAdapter(MainActivity.this, weekdays, 6, lv.getBottom() - lv.getTop());
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
CheckedTextView ctv = (CheckedTextView) arg1;
adapter.toggle(ctv);
}
});
Có giải pháp phù hợp nào không? –