Android败笔之ListView设置分割线颜色
2015-05-14 09:24
417 查看
出处:http://blog.csdn.net/bdmh/article/details/39522071
使用下面代码设置分隔线颜色,无效,竟然看不到分割线了,即使设置分割线宽度为100,也看不到,从这两行代码看,应该没什么问题吧,也是很常规的写法。
[java] view
plaincopy
listView.setDividerHeight(1);
listView.setDivider(new ColorDrawable(Color.GRAY));
为什么无效呢?看看setDivider的源码
[java] view
plaincopy
public void setDivider(Drawable divider) {
if (divider != null) {
mDividerHeight = divider.getIntrinsicHeight();
} else {
mDividerHeight = 0;
}
mDivider = divider;
mDividerIsOpaque = divider == null || divider.getOpacity() == PixelFormat.OPAQUE;
requestLayout();
invalidate();
}
看到 下面代码了吗
[java] view
plaincopy
if (divider != null) {
mDividerHeight = divider.getIntrinsicHeight();
如果参数不为空,要获取一个内部默认的高度,这个高度是多少呢,看下面代码
[java] view
plaincopy
public int getIntrinsicHeight() {
return -1;
}
高度返回-1,要能看到线才见鬼了!
从源代码看,只要调用了ListView的setDivider接口,mDividerHeight就会被置为0或-1,所以你根本看不到线,如果想看到线,就要把调用顺序反过来,如下
[java] view
plaincopy
listView.setDivider(new ColorDrawable(Color.GRAY));
listView.setDividerHeight(1);
在此,不评论其源代码如何,只是个人认为这样的逻辑实在不妥,设置颜色不应该将 已经设置好的基本参数修改掉。
使用下面代码设置分隔线颜色,无效,竟然看不到分割线了,即使设置分割线宽度为100,也看不到,从这两行代码看,应该没什么问题吧,也是很常规的写法。
[java] view
plaincopy
listView.setDividerHeight(1);
listView.setDivider(new ColorDrawable(Color.GRAY));
为什么无效呢?看看setDivider的源码
[java] view
plaincopy
public void setDivider(Drawable divider) {
if (divider != null) {
mDividerHeight = divider.getIntrinsicHeight();
} else {
mDividerHeight = 0;
}
mDivider = divider;
mDividerIsOpaque = divider == null || divider.getOpacity() == PixelFormat.OPAQUE;
requestLayout();
invalidate();
}
看到 下面代码了吗
[java] view
plaincopy
if (divider != null) {
mDividerHeight = divider.getIntrinsicHeight();
如果参数不为空,要获取一个内部默认的高度,这个高度是多少呢,看下面代码
[java] view
plaincopy
public int getIntrinsicHeight() {
return -1;
}
高度返回-1,要能看到线才见鬼了!
从源代码看,只要调用了ListView的setDivider接口,mDividerHeight就会被置为0或-1,所以你根本看不到线,如果想看到线,就要把调用顺序反过来,如下
[java] view
plaincopy
listView.setDivider(new ColorDrawable(Color.GRAY));
listView.setDividerHeight(1);
在此,不评论其源代码如何,只是个人认为这样的逻辑实在不妥,设置颜色不应该将 已经设置好的基本参数修改掉。
相关文章推荐
- Android败笔之ListView设置分割线颜色
- android ListView 程序代码设置颜色分割线 Divider
- Android listview分割线的颜色设置
- android中设置ListView的选中的Item的背景颜色(附源码)
- android中设置ListView的选中的Item的背景颜色
- android 点击右上角加号,弹出下拉菜单的分割线背景颜色设置解决方案
- Android中的ListView点击时的背景颜色设置
- Android给ListView设置分割线Divider样式
- Android ListView 中分割线的设置
- android设置listview的item颜色相间排列
- android中设置ListView的选中的Item的背景颜色
- Android列表组件ListView使用详解之设置分割线
- android 中的ListView选中项的背景颜色怎么设置?
- android listview 分割线渐变色和几种颜色值定义
- ExpandableListView 分割线颜色设置
- Android 设置ListView的分割线
- Android中设置ListView的选中的Item的背景颜色【复杂模式】
- Android小知识——listView的分割线高度和颜色
- android listview去掉分割线 && 去除或替换listview 默认的点击选中时的颜色
- [Android]ListView中分割线的设置