我有listview,它使用MergeAdapter(它可以组合不同的适配器本身并充当复合适配器)。 我的问题:它在第一和第二项之间有透明的空间(100%不是分隔符,我有不同的分隔符)。顺便说一下,第1和第2项之间没有分隔线。 我在hierarchyviewer中加载了listview的视图层次结构(它由3个项目组成,只有3个用于测试目的),这就是我发现的:
第一项放置在垂直轴上的0-36px(高度为36px,顶部为0px)
第二项放置在41-191px(150px高,41px-顶部)
第3项被放置在196-346px(150px高度,196px-顶部)
所有项目的宽度均为match_parent。
我看到第1和第2项之间的透明空间(我无法测量它,但它大约是5px,就像第1项结束和第2项开始之间的差异一样)。 然而,我发现第二和第三项之间没有透明空间,尽管第二项以191px结束而第三项以196px结束。 看来,android在第2~3项的情况下使用背景颜色自动填充这个5像素区域,但是在第1~第2项目的情况下不进行。
谁能解释一下这一切是如何运作的?我可以误解一些事情。我不确定我的假设是否正确。
此外,我的目标是摆脱第一和第二项之间的空间。
P.S。对于那些使用过MergeAdapter的人,我在使用时有一些特定于此适配器的观察结果:
adapter.addView(myView, false);
它显示上面提到的透明区域的视图(myView和下一个ListView项目之间没有分隔符)。当我使用:
adapter.addView(myView, true);
我看不到透明区域,而是分隔线。事实上,我既不需要分隔符也不需要透明区域。如何实现这个目标?
P.P.S。尽管myView是ListView中的第一个元素,但我无法将myView放在ListView本身之上,因为有时它会被添加到ListView中间的某个位置。
答案 0 :(得分:4)
ListView有两种方法使用它并尝试....
listView.setDivider(Drawable divider);//listView.setDivider(R.drawable.divider);
listView.setDividerHeight(int height);//listView.setDividerHeight(0);
将解决您的问题