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条数据,效果图为:
![](https://img-blog.csdn.net/20150114153138265)
此时可看到ListView居中显示,在ListView的顶部和底部没有显示分隔线,如果项目需求中需要显示这两条线怎么办?我百度的时候发现千篇一律的都是一个说法,说ListView的高度要设置为match_parent,还有要设置:android:headerDividersEnabled="true"、android:footerDividersEnabled="true"。这个答案实在是太差,因为有的时候ListView的高度就是需要设置为wrap_content。
其实这个解答,只要我们在写代码的时候认真的去看一下SDK的文档说明即可知道如何解决,如在android:headerDividersEnabled
="true"这个属性,很明显说的是允许叶眉的分隔线,有的人说设置了这个为true也没起作用,其实是没有看到这个属性的说明,我们在xml布局中输入这个属性的时候会有代码提示,这个时候可以选择设置哪个属性,并且有这个属性的相关说明,截图如下:
![](https://img-blog.csdn.net/20150114154056562)
如上图,对 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));
再次运行,结果如下:
![](https://img-blog.csdn.net/20150114155357759)
注:这是把ListView的第1条数据的顶部和最后一条数据的底部的分隔线显示出来,并不是说是ListView的顶部和底部的分隔线,因为ListView的高有可能是100dp,但是它里面有1万条数据。
经过实验,我发现android:headerDividersEnabled、 android:footerDividersEnabled这两个属性默认就是为true的,因此就不需要在xml中设置这两个属性了,多此一举。那这两个属性什么时候需要设置?当你的ListView有header view或footer view的时候,并且你不想显示顶部或底部的分隔线的时候,就需要设置对应的属性为false。
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。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories