1. 程式人生 > >動態設定GridView的高度,固定column,實現高度自適應

動態設定GridView的高度,固定column,實現高度自適應

動態設定GridView的高度,固定column,根據gridview中的item個數設定高度:

呼叫以下方法:

 public static void setListViewHeightBasedOnChildren(GridView listView) {
    	// 獲取listview的adapter
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            return;
        }
        // 固定列寬,有多少列
        int col = 4;// listView.getNumColumns();
        int totalHeight = 0;
        // i每次加4,相當於listAdapter.getCount()小於等於4時 迴圈一次,計算一次item的高度,
        // listAdapter.getCount()小於等於8時計算兩次高度相加
        for (int i = 0; i < listAdapter.getCount(); i += col) {
        	// 獲取listview的每一個item
            View listItem = listAdapter.getView(i, null, listView);
            listItem.measure(0, 0);
            // 獲取item的高度和
            totalHeight += listItem.getMeasuredHeight();
        }

        // 獲取listview的佈局引數
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        // 設定高度
        params.height = totalHeight;
        // 設定margin
        ((MarginLayoutParams) params).setMargins(10, 10, 10, 10);
        // 設定引數
        listView.setLayoutParams(params);
    }
呼叫此方法後,需要在呼叫notifyDataSetChanged()方法,實現介面重新整理