listview,girdview這些控件在我們android開發經常用的到,但是,數據顯示不全的問題也是我們經常碰到的,下面只要在代碼中加入幾行代碼即可
以下方法僅供參考,轉自網絡
listview控件顯示數據
private void listFitHeight(ListView listView){
RepairDetailInfosAdpter listAdapter=(RepairDetailInfosAdpter)listView.getAdapter();
if(listAdapter==null){
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));
((ViewGroup.MarginLayoutParams)params).setMargins(0,0,0,0);
listView.setLayoutParams(params);
}
gridview控件顯示數據
private static void setListViewHeightBasedOnChildren(GridView listView, int col) {
//獲取listview的adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
//固定列寬,有多少列
//intcol=3;//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
((ViewGroup.MarginLayoutParams) params).setMargins(10, 10, 10, 10);
//設置參數
listView.setLayoutParams(params);
}