Android - ScrollView 與 ListView衝突,動態設定ListView高度

Android - ScrollView 與 ListView衝突,動態設定ListView高度

不管ListView設定match_parent或wrap_content,只要外層包了一層ScrollView,ListView的高度,都變成一個數據的高度。

為了解決這個問題,剛好網路上有詳盡的解決方案以下是他的解決方案,動態計算ListView的高度,


    /**
     * 动态设置ListView的高度
     * @param listView
     */
    public static void setListViewHeightBasedOnChildren(ListView listView) {
        if(listView == null) return;

        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);
    }

細看更詳細的解說,網址如下

http://blog.csdn.net/minimicall/article/details/40983331