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等。
