ListView使用代码设置divider

需求:

项目中有一个ListView列表页面,有几种不同的数据都需要调用这个页面,展示的item各不相同,所以无法直接在xml文件里设置divider。需要根据不同的数据类型,来判断是否需要有divider。

疑难:

理论上使用代码设置divider应该并没什么难的,但是我在写好了代码后,却发现没有效果。这真是,让人烦恼。

listView.setDividerHeight(20);
listView.setDivider(new ColorDrawable(Color.BLACK));

似乎没什么错误,但是就是没效果。

看看源码:

Paste_Image.png
Paste_Image.png

看到这里,已经发现问题了,setDivider(Drawable divider),这个方法中divider不等于null的时候,会直接调用divider.getIntrinsicHeight();那么这个getIntrinsicHeight是什么值呢?

Paste_Image.png

一切真相大白!原来是getIntrinsicHeight搞的鬼,无论我在之前怎么设置DividerHeight,都会在setDivider(Drawable divider)中变成-1。

解决办法:

其实很简单啦,将调用顺序反过来即可。先设置setDivider,然后setDividerHeight。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,002评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,665评论 0 17
  • 这篇文章分三个部分,简单跟大家讲一下 RecyclerView 的常用方法与奇葩用法;工作原理与ListView比...
    LucasAdam阅读 4,448评论 0 27
  • 2017年11月9日,星期四,天气:晴 作息时间:晚上9:30睡觉。早上6点10分起床。 经典内容:《易经》三十三...
    ZZ李梦涵阅读 903评论 2 2
  • 一声啼哭 惊醒低首祈祷 念声佛号 愿你吉祥安康 那样不经意闯进我的空间 满满全是你眯眼模样 游泳池里也不肯动下小脚...
    沧海一粟贝阅读 180评论 0 3