Listview在其视图之间有透明的空间 - 如何删除它?

时间:2012-04-03 17:15:43

标签: android listview adapter

我有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中间的某个位置。

1 个答案:

答案 0 :(得分:4)

ListView有两种方法使用它并尝试....

listView.setDivider(Drawable divider);//listView.setDivider(R.drawable.divider);
listView.setDividerHeight(int height);//listView.setDividerHeight(0);

将解决您的问题