计算listview的高度,特别注意:item布局的root节点必须要是LinearLayout,否则会报空指针
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);
}