Tôi cần đo tổng chiều cao của ListView nhưng dường như tôi liên tục nhận được các giá trị sai. Tôi đang sử dụng mã này:Android: Cách đo tổng chiều cao của ListView
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),
MeasureSpec.AT_MOST);
Log.w("DESIRED WIDTH", String.valueOf(listAdapter.getCount()));
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
Log.w("HEIGHT"+i, String.valueOf(totalHeight));
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
Vấn đề là tôi nhận được chiều cao lớn hơn tôi nên nhận. Mỗi mục danh sách được đo khác nhau và tất cả các mục có cùng chiều cao nên chắc chắn không nên làm điều đó. Chiều cao của mỗi phần tử ít nhất gấp đôi chiều cao thực của nó.
Cảm ơn bạn trước.
edit1:
Tôi có hai ListView và cả hai đều có các mục có 6-7 trường EditText. Tôi hiển thị/ẩn ListView nếu người dùng muốn viết/xóa các giá trị trong EditText. Tất cả mọi thứ hoạt động tốt trừ khi tôi muốn hiển thị danh sách, phải mất rất nhiều không gian vì phương pháp tính toán ListView cần rất nhiều không gian. Do đó tôi có rất nhiều không gian trống bên dưới ListView đó. Giống như không gian trống rỗng gấp ba lần cần thiết.
http://stackoverflow.com/questions/2312683/calculate-the-size-of-a-list-view-or- làm thế nào để nói nó hoàn toàn mở rộng – RobinHood
Cảm ơn bạn nhưng điều đó không hiệu quả với tôi. Tôi nghĩ rằng tôi có vấn đề này bởi vì tôi không có chỉ một ListView. Có thể có một số xung đột với vùng phủ sóng. – Cristiano