首页 文章

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

提问于
浏览
1

我有listview,它使用MergeAdapter(它可以组合不同的适配器本身并充当复合适配器) . 我的问题:它在第一和第二项之间有透明的空间(100%不是分隔符,我有不同的分隔符) . 顺便说一下,第1和第2项之间没有分隔线 . 我在hierarchyviewer中加载了listview的视图层次结构(它由3个项目组成,只有3个用于测试目的),这就是我发现的:

第一项放置在垂直轴上0-36px(高度36px,0px - 顶部)

第2项放置在41-191px(150px高,41px - 顶部)

第3项放置在196-346px(150px高度,196px - 顶部)

所有项目的宽度都是match_parent .

我看到第一和第二项之间的透明空间(我无法测量它,但它大约是5px,就像第一项结束和第二项开始之间的差异一样) . 然而,我发现第二和第三项之间没有透明空间,尽管第二项以191px结束而第三项以196px结束 . 看来,android在第2~3项的情况下使用背景颜色自动填充这个5像素区域,但在第1~第2项目的情况下不进行 .

谁能解释一下这一切是如何运作的?我可以误解一些事情 . 我不确定我的假设是否正确 .

此外,我的目标是摆脱第一和第二项之间的空间 .

附:对于那些曾经使用过MergeAdapter的人,当我使用时,我有一些特定于此适配器的观察:

adapter.addView(myView, false);

它显示上面提到的透明区域的视图(myView和下一个ListView项目之间没有分隔符) . 当我使用时:

adapter.addView(myView, true);

我看不到透明区域,而是分隔线 . 事实上,我既不需要分隔符也不需要透明区域 . 如何实现这一目标?

P.P.S.尽管myView是ListView中的第一个元素,但我无法将myView放在ListView本身之上,因为有时它会被添加到ListView中间的某个位置 .

1 回答

  • 4

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

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

    将解决您的问题

相关问题