您的位置:首页 > 移动开发 > Android开发

Android开发 ListView底部分割线不显示的解决办法

2016-09-26 11:20 495 查看
转载请说明出处,本文来自Android菜鸟:http://blog.csdn.net/android_cai_niao/article/details/42710609  
QQ:2717521606

定义了一个ListView如下:

[html] view
plain copy

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

    xmlns:tools="http://schemas.android.com/tools"  

    android:layout_width="match_parent"  

    android:layout_height="match_parent"  

    android:gravity="center" >  

      

    <ListView  

        android:id="@+id/listView"  

        android:layout_height="wrap_content"  

        android:layout_width="match_parent" />  

  

</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

listView.addHeaderView(new View(this));  

listView.addFooterView(new View(this));  

再次运行,结果如下:



注:这是把ListView的第1条数据的顶部和最后一条数据的底部的分隔线显示出来,并不是说是ListView的顶部和底部的分隔线,因为ListView的高有可能是100dp,但是它里面有1万条数据。

经过实验,我发现android:headerDividersEnabled、 android:footerDividersEnabled这两个属性默认就是为true的,因此就不需要在xml中设置这两个属性了,多此一举。那这两个属性什么时候需要设置?当你的ListView有header view或footer view的时候,并且你不想显示顶部或底部的分隔线的时候,就需要设置对应的属性为false。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android listview 分割线