动态设置ListView的高度

2014-11-24 11:29:00 · 作者: · 浏览: 0

今天开发遇到一个问题,就是当动态插入ListView数据的时候,由于之前ListView的高度已经固定死了,所以显示不完整的数据,并且底部显示黑边。

解决方法如下:

activity中添加下面函数

public void setListViewHeightBasedOnChildren(ListView listView) {  
  
  ListAdapter listAdapter = 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));  
  
  ((MarginLayoutParams) params).setMargins(10, 10, 10, 10); // 可删除  
  
  listView.setLayoutParams(params);  
 }  


xml 文件代码如下: