public void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if(listAdapter ==null) {
return;
}
int tempHeight =0;
for(int i =0;i < listAdapter.getCount();i++) {
View listItem = listAdapter.getView(i, null,listView);
listItem.measure(0,0);
tempHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
int totalHeight = tempHeight + (listView.getDividerHeight() * (listAdapter.getCount() -1));
//获取屏幕的高度
int screenHeight = CommUtils.getScreenHeight(this);
//如果ListView高度超过了屏幕的三分之一,则将屏幕的三分之一设置为它的高度
if(totalHeight > screenHeight /3) {
totalHeight = screenHeight /3;
}
params.height= totalHeight;
listView.setLayoutParams(params);
}