ListView 動態設置高度問題

今天開發遇到一個問題,就是當動態插入ListView數據的時候,由於之前ListView的高度已經固定死了,所以顯示不完整的數據,並且底部顯示黑邊。如圖:


spacer.gif

而我希望這個ListView可以動態的改變高度:

spacer.gif

當時第一個想到的解決辦法就是在setAdapter之後去重新修改ListView的高度,但是發現設置match_parent或wrap_content沒有效果,只能設置一個固定的高度。但是顯然我的數據長度是不定的,所以設置固定高度不顯示。


最後採用的辦法是:

[java] view plaincopy

  1. public void setListViewHeightBasedOnChildren(ListView listView) {  

  2.   

  3.   ListAdapter listAdapter = listView.getAdapter();  

  4.   

  5.   if (listAdapter == null) {  

  6.    return;  

  7.   }  

  8.   

  9.   int totalHeight = 0;  

  10.   

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

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

  13.    listItem.measure(00);  

  14.    totalHeight += listItem.getMeasuredHeight();  

  15.   }  

  16.   

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

  18.   

  19.   params.height = totalHeight  

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

  21.   

  22.   ((MarginLayoutParams) params).setMargins(10101010); // 可刪除  

  23.   

  24.   listView.setLayoutParams(params);  

  25.  }  


[html] view plaincopy

  1. <ListView  

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

  3.              android:layout_width="fill_parent"  

  4.              android:layout_height="fill_parent"  

  5.              android:cacheColorHint="#FFF4F4F4"  

  6.              android:dividerHeight="0.0dip"   

  7.              android:fadingEdge="none" // 邊界黑邊  

  8.              />  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章