ListView使用代码设置divider

作者: 鲁克巴克诗 | 来源:发表于2016-12-21 09:43 被阅读559次

需求:

项目中有一个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。

相关文章

网友评论

    本文标题:ListView使用代码设置divider

    本文链接:https://www.haomeiwen.com/subject/hrlfvttx.html