Android開發 ListView底部分割線不顯示的解決辦法

轉載請說明出處,本文來自Android菜鳥:http://blog.csdn.net/android_cai_niao/article/details/42710609   QQ:2717521606


定義了一個ListView如下:

[html] view plain copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:gravity="center" >  
  6.       
  7.     <ListView  
  8.         android:id="@+id/listView"  
  9.         android:layout_height="wrap_content"  
  10.         android:layout_width="match_parent" />  
  11.   
  12. </LinearLayout>  

此佈局爲在頁面的居中位置顯示一個ListView,假如給這個ListView填充3條數據,效果圖爲:


此時可看到ListView居中顯示,在ListView的頂部和底部沒有顯示分隔線,如果項目需求中需要顯示這兩條線怎麼辦?我百度的時候發現千篇一律的都是一個說法,說ListView的高度要設置爲match_parent,還有要設置:android:headerDividersEnabled="true"、android:footerDividersEnabled="true"。這個答案實在是太差,因爲有的時候ListView的高度就是需要設置爲wrap_content。


其實這個解答,只要我們在寫代碼的時候認真的去看一下SDK的文檔說明即可知道如何解決,如在android:headerDividersEnabled

="true"這個屬性,很明顯說的是允許葉眉的分隔線,有的人說設置了這個爲true也沒起作用,其實是沒有看到這個屬性的說明,我們在xml佈局中輸入這個屬性的時候會有代碼提示,這個時候可以選擇設置哪個屬性,並且有這個屬性的相關說明,截圖如下:


如上圖,對 android:footerDividersEnabled 屬性的說明爲“When set to false, the ListView will not draw the divider before 
 each footer view. [boolean]",英文不好的拿有道詞典來翻譯一下就能理解,大概意思爲“當設置爲false的時候,這個ListView將不畫footer view之前的分隔線”,就此想要顯示footer view之前的分隔線,那麼這個屬性要設置爲true,但是設置爲true並運行的時候發現並沒有顯示出footer view之前的分隔線,爲什麼?這是因爲我們沒有理解好屬性的說明,人家說的是footer view之前,而我們現在的ListView有footer view嗎?沒有,所以問題就出在這裏了,你把footer view加上即可,如果說你的ListView確實不需要header view和footer view,但是又需要顯示出ListView頂部和底部的分隔線應該怎麼辦?So easy!我們給它設置一個空的view即可,如下:

[java] view plain copy
  1. listView.addHeaderView(new View(this));  
  2. listView.addFooterView(new View(this));  

再次運行,結果如下:

注:這是把ListView的第1條數據的頂部和最後一條數據的底部的分隔線顯示出來,並不是說是ListView的頂部和底部的分隔線,因爲ListView的高有可能是100dp,但是它裏面有1萬條數據。


經過實驗,我發現android:headerDividersEnabled、 android:footerDividersEnabled這兩個屬性默認就是爲true的,因此就不需要在xml中設置這兩個屬性了,多此一舉。那這兩個屬性什麼時候需要設置?當你的ListView有header view或footer view的時候,並且你不想顯示頂部或底部的分隔線的時候,就需要設置對應的屬性爲false。

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