動態設定GridView的高度,固定column,實現高度自適應
阿新 • • 發佈:2019-02-06
動態設定GridView的高度,固定column,根據gridview中的item個數設定高度:
呼叫以下方法:
呼叫此方法後,需要在呼叫notifyDataSetChanged()方法,實現介面重新整理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); }