大家都知道在ScrolleView中使用ListView需要计算listview每个item的高度,不然的话,listview只会显示一个item。所以我在初始化的时候调用了下面的方法计算了listView item 的高度:
// 获取ListView对应的Adapter
ListAdapter homeAdapter = listView.getAdapter();
if (homeAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0, len = homeAdapter.getCount(); i < len; i++) {
// listAdapter.getCount()返回数据项的数目
View listItem = homeAdapter.getView(i, null, listView);
// 计算子项View 的宽高
listItem.measure(0, 0);
int childHeight = listItem.getMeasuredHeight();
// 统计所有子项的总高度
totalHeight += childHeight;
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (homeAdapter.getCount() - 1));
// listView.getDividerHeight()获取子项间分隔符占用的高度
// params.height最后得到整个ListView完整显示需要的高度
listView.setLayoutParams(params);