一般来说,一个页面如果只有一个ListView,是不需要设置ListView的高度,因为ListView本身自带滚动条,不用担心高度问题。
可是,如果我们一个页面有两个,甚至多个ListView的时候,就得考虑ListView的高度了,如果不设置ListView的高度,后面的ListView就会被前面的ListView撑开,挡住内容。
其实设置ListView的高度并没有那么复杂,首先,我们需要写一个方法setListViewHeight(ListView lv),参数当然就是需要设置高度的ListView了.
下面直接上代码:
private void setListViewHeight(ListView listView) {
if (listView == null)
return;
// 获得listview的适配器adapter
ListAdapter listAdapter = listView.getAdapter();
//判断非空
if (listAdapter == null)
return;
//高度变量初始化
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
//设置高度
totalHeight += listItem.getMeasuredHeight();
}
//
ViewGroup.LayoutParams params = listView.getLayoutParams();
// 计算params的高度
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
当然,还要记得调用这个方法,千万不要太粗心了
setListViewHeight(lv_infos);