動态設定gridview的高度,固定column,根據gridview中的item個數設定高度:
調用以下方法:
[java] view
plaincopyprint?
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()方法,實作界面重新整理