動態設定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()方法,實現界面刷新