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.youkuaiyun.com/xiaoxiaobian3310903/article/details/7182231