【发布时间】:2012-04-03 17:15:42
【问题描述】:
我有listview,它使用MergeAdapter(它本身可以组合不同的适配器并充当复合适配器)。 我的问题:它在第一个和第二个项目之间有透明的空间(即 100% 不是分隔符,我有不同的分隔符)。顺便说一句,第 1 项和第 2 项之间没有分隔线。 我在 hierarchyviewer 中加载了我的列表视图的视图层次结构(它由 3 个项目组成,仅 3 个用于测试目的),这就是我发现的:
第一项放置在垂直轴上 0-36px 的位置(36px 高度,0px - 顶部)
第二个项目放置在 41-191px(150px 高度,41px - 顶部)
第三个项目放置在 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);
我看不到透明区域,而是分隔线。事实上,我既不需要分隔线也不需要透明区域。如何存档?
附言尽管 myView 是 ListView 中的第一个元素,但我不能将 myView 放在 ListView 本身之上,因为有时它会添加到 ListView 中间的某个位置。
【问题讨论】: