Android 一个页面上下两个ListView,当上面的ListView过长时,下面的List基本没有了滑动空间,查阅网上资料,解决办法基本是采用ScrollView做页面滑动,notifyDataSetChanged()之前,动态设置ListView的高度,但是这样会丢失List的回收机制,不太合理,项目紧先这么做了,记录一下。
/*** * 动态设置listview的高度 * * @param listView */ public void setListViewHeightBasedOnChildren(ListView listView) { BaseAdapter listAdapter = (BaseAdapter) 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.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() + 1)); listView.setLayoutParams(params); }
以上方法只适应于数据量小的情况。
另外,网上也有大神指出,ListView跟ScrollView共存时,可以把页面其他元素放入ListView的Header、Footer、Item等。