Android 动态获取ListView的高度

public static void setListViewHeightBasedOnChildren(ListView listView) 
{ 
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) 
{ 
// pre-condition 
return; 
} 
int totalHeight = 0; 
for (int i = 0; i < listAdapter.getCount(); i++)
{ 
View listItem = listAdapter.getView(i, null, listView); 
// listItem.measure(0, 0); 
listItem.measure( MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 
totalHeight += listItem.getMeasuredHeight(); 
}
ViewGroup.LayoutParams params = listView.getLayoutParams(); 
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); 
listView.setLayoutParams(params); 
} 

  


使用这个代码来获取listview的高度,须要注意一下几个问题:
一、listview的item的根布局必定要是LinearLayout;
二、调用这个方法须要在适配器数据加载更新以后;
代码以下:
mAdapter.notifyDataSetChanged();
Function.getTotalHeightofListView(mListView);
三、获取item的高度也能够用注释掉的代码,效果同样的java

相关文章
相关标签/搜索