scrollView中添加listView,如果要直接添加的话总会出现各种各样的问题,不是listView失效就是scrollView不能滑动了,经过反复比较查找,写出来一个统一的方法。
<span style="font-size:14px;"> public static void setListViewHeightBased(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
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.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}</span>
如果业务必须要实现scrollView嵌套listView时,那么在代码中把listView的控件定义出来,调用这个方法。这样做的目的是根据ListView的子项目重新计算ListView的高度,然后把高度再作为LayoutParams设置给ListView,这样它的高度就正确了。
可以把这个方法写成工具类,放进项目中。