Android ScrollView中嵌套ListView
阿新 • • 發佈:2017-05-18
() 固定 rgb don java and ada ldr androi
由於要做一個相似美團的團購產品。scrollview中還有嵌入listview,要是直接把listview嵌進scrollview中。listview的高度是固定的不能進行滑動。默認情況下Android是禁止在ScrollView中放入另外的ScrollView的,它的高度是無法計算的。這就導致裏面的listview高度不能確定,所以僅僅能在程序中動態設置代碼例如以下:
public class Utility { public static void setListViewHeightBasedOnChildren(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); } }
僅僅要在設置ListView的Adapter後調用此靜態方法就可以讓ListView正確的顯示在其父ListView的ListItem中。
可是要註意的是,子ListView的每一個Item必須是LinearLayout,不能是其它的,由於其它的Layout(如RelativeLayout)沒有重寫onMeasure(),所以會在onMeasure()時拋出異常。
這樣就能夠實現scrollview加listview的 嵌套復雜布局了。
Android ScrollView中嵌套ListView