【问题标题】:Listview has transparent space between its views - how to remove it?Listview 在其视图之间有透明空间 - 如何删除它?
【发布时间】: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 中间的某个位置。

【问题讨论】:

    标签: android listview adapter


    【解决方案1】:

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

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

    会解决你的问题

    【讨论】:

    • 如果我使用.setDividerHeight(0),既没有透明空间,也没有分隔线。但是我需要在第 2 行和第 3 行之间进行分隔,如何解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多