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

来源:互联网 发布:苹果程序员培训机构 编辑:程序博客网 时间:2024/04/28 06:32

转载请说明出处,本文来自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。

0 0
原创粉丝点击