计算listview的高度

2014-11-24 11:01:05 · 作者: · 浏览: 0

计算listview的高度,特别注意:item布局的root节点必须要是LinearLayout,否则会报空指针

[java] public void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}

int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View view = listAdapter.getView(i, listView.getChildAt(i), listView);
view.measure(0, 0);
totalHeight += view.getMeasuredHeight();
}

ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));

System.out.println(totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1)));

listView.setLayoutParams(params);
}

public void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}

int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View view = listAdapter.getView(i, listView.getChildAt(i), listView);
view.measure(0, 0);
totalHeight += view.getMeasuredHeight();
}

ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));

System.out.println(totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1)));

listView.setLayoutParams(params);
}