ListView动态设置高度问题-创新互联

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

为铁门关等地区用户提供了全套网页设计制作服务,及铁门关网站建设行业解决方案。主营业务为成都做网站、成都网站制作、成都外贸网站建设、铁门关网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

ListView 动态设置高度问题

而我希望这个ListView可以动态的改变高度:

ListView 动态设置高度问题

当时第一个想到的解决办法就是在setAdapter之后去重新修改ListView的高度,但是发现设置match_parent或wrap_content没有效果,只能设置一个固定的高度。但是显然我的数据长度是不定的,所以设置固定高度不显示。

最后采用的办法是:

[java] view plaincopy

  1. public void setListViewHeightBasedOnChildren(ListView listView) {

  2.   ListAdapter listAdapter = listView.getAdapter();

  3.   if (listAdapter == null) {

  4.    return;

  5.   }

  6.   int totalHeight = 0;

  7.   for (int i = 0; i < listAdapter.getCount(); i++) {

  8.    View listItem = listAdapter.getView(i, null, listView);

  9.    listItem.measure(0, 0);

  10.    totalHeight += listItem.getMeasuredHeight();

  11.   }

  12.   ViewGroup.LayoutParams params = listView.getLayoutParams();

  13.   params.height = totalHeight

  14.     + (listView.getDividerHeight() * (listAdapter.getCount() - 1));

  15.   ((MarginLayoutParams) params).setMargins(10, 10, 10, 10); // 可删除

  16.   listView.setLayoutParams(params);

  17.  }

[html] view plaincopy

  1.              android:id="@+id/getInfo"

  2.              android:layout_width="fill_parent"

  3.              android:layout_height="fill_parent"

  4.              android:cacheColorHint="#FFF4F4F4"

  5.              android:dividerHeight="0.0dip"

  6.              android:fadingEdge="none" // 边界黑边

  7.              />

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章题目:ListView动态设置高度问题-创新互联
当前地址:http://pwwzsj.com/article/copopp.html