Android: как измерить общую высоту ListView [дубликата]
На этот вопрос уже есть ответ:
Рассчитайте размер представления списка или как сказать, чтобы он полностью раскрылся 12 ответовМне нужно измерить общую высоту 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();
}
Проблема в том, что я получаю большую высоту, чем я должен получить. Каждый элемент списка измеряется по-разному, и все элементы имеют одинаковую высоту, поэтому определенно не следует этого делать. Высота каждого элемента как минимум вдвое больше его реальной высоты.
Заранее спасибо
Edit1:
У меня есть два ListView, и у них обоих есть элементы с 6-7 полями EditText. Я показываю / скрываю ListView, если пользователь хочет записать / удалить значения в EditText. Все работает хорошо, за исключением случаев, когда я хочу показать список, он занимает много места, потому что метод, рассчитанный для ListView, требует много места. Из-за этого у меня много пустого пространства под этим ListView. Как и в три раза больше свободного места, которое нужно.