ListView底部分隔線的問題
在工作中遇到了一個難題,就是一個listView在最下面的一個item下面沒有分割線,要求是必須得有這條分割線。經過一通研究發現了這個奇怪的現象:1. ListActivity有這條底部分割線。
2.在Activity中只有listview,沒有別的控件的話也會有。
其實ListActivity也是一個Activity,只不過在其中使用了SetContentView(listView)方法設置了一個listView作爲其顯示的View而已。所以結論就是隻要這個activity調用了SetContentView(listView)就會有這條底部分割線。
那麼什麼情況下纔不會有這條分割線呢?在Activity中如果調用setContentView(View)而ListView只是內嵌入到這個View的話有可能會沒有這條分割線。
分析其原因:通過加斷點調試發現在listView中,所有的分割線都是通過畫一個很窄的矩形來實現的,但是在畫分割線前都會都會判斷目前的位置A和listView的長度B,如果A=B了,那麼就不會畫這條分割線了。但是將Listview嵌入到一個View中,一般會設置爲高度爲wrap_content,這種情況下,最後那條分割線的位置剛好等於listView的高度,所以系統不會畫上這條分割線。那要怎麼樣纔會畫上呢?很簡單,將ListView的高度設置爲fill_partent就可以了。
當然以上所說的都是item很少的情況下,如果item很多以至於必須顯示滾動條的話,那最後一個item下面是肯定不會有分割線了。
自己測試:在一個Activity中只有一個ListView,把它的layout_height修改爲fill_parent,最底下的線是可以顯示出來的,但修改爲wrap_content就顯示不出來了,如下圖:
自己測試:在一個Activity中最上邊和最下邊都有個TextView,ListView夾在中間,把它的layout_height爲fill_parent或者wrap_content,最底下的線是可以顯示出來的。
佈局爲:
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:id="@+id/mTop"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:text="HelloWorldTop"
- />
- <TextView
- android:id="@+id/mBottom"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:text="HelloWorldBottom"
- />
- <ListView
- android:id="@+id/mList"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/mTop"
- android:layout_above="@id/mBottom"/>
- </RelativeLayout>
轉摘自:http://blog.csdn.net/xiaoxiaobian3310903/article/details/7182231