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);
}