网络上已经有很多这方面的文章,甚至完整的代码。
但是,我发现如果ListView的Item布局比较复杂,或者某个View有多行显示时,网上的代码测量出来的高度是错误的。
这里,结合自己的实践以及一些stackOverFlow的参考,进行一下总结。
首先,从网络上的方法开始。
如果你搜索“动态测量ListView的高度”,你会看到很多类似下面的代码
// 动态改变listView的高度
public void measureListViewWrongHeight(ListView listView) {
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 += itemHeight;
}
// 减掉底部分割线的高度
int historyHeight = totalHeight
+ (listView.getDividerHeight() * listAdapter.getCount() - 1);
Log.d("Javine"