需求:
项目中有一个ListView列表页面,有几种不同的数据都需要调用这个页面,展示的item各不相同,所以无法直接在xml文件里设置divider。需要根据不同的数据类型,来判断是否需要有divider。
疑难:
理论上使用代码设置divider应该并没什么难的,但是我在写好了代码后,却发现没有效果。这真是,让人烦恼。
listView.setDividerHeight(20);
listView.setDivider(new ColorDrawable(Color.BLACK));
似乎没什么错误,但是就是没效果。
看看源码:
看到这里,已经发现问题了,setDivider(Drawable divider),这个方法中divider不等于null的时候,会直接调用divider.getIntrinsicHeight();那么这个getIntrinsicHeight是什么值呢?
一切真相大白!原来是getIntrinsicHeight搞的鬼,无论我在之前怎么设置DividerHeight,都会在setDivider(Drawable divider)中变成-1。
解决办法:
其实很简单啦,将调用顺序反过来即可。先设置setDivider,然后setDividerHeight。