【问题标题】:Remove the bottom divider of an android ListView删除 android ListView 的底部分隔线
【发布时间】:2011-06-25 02:56:43
【问题描述】:

我有一个固定的高度ListView。它在列表项之间有分隔线,但它也在最后一个列表项之后显示分隔线。

有没有办法在ListView 的最后一项之后不显示分隔符?

【问题讨论】:

    标签: android listview divider


    【解决方案1】:

    只需添加 android:footerDividersEnabled="false" 到您的 ListView 描述

    【讨论】:

    • 从 4.4.2 开始这似乎不再有效。我可以在我的许多测试设备上运行相同的应用程序(从 2.3.7 一直到 4.4.2),而 KitKat 是唯一一个似乎没有效果的应用程序......有什么想法吗?我没有在我的 ListView 中添加页脚或页眉,我已经在两台设备(Nexus 5 和 HTC One M8)上重现了这一点。
    • @ScootrNova 我使用的是 4.4.4,当我设置列表视图的 layoutHeight="wrap_content" 时,底部分隔线消失了。
    • 使用背景 = @android:color/transparent,帮我解决了
    • 在 android 5.1 和 7.0 上尝试了这个解决方案,效果很好!谢谢大佬。
    【解决方案2】:

    正如@ScootrNova 所说,这似乎在 android 4.4.x 中表现不同(又名 buggy)(我不知道问题是什么时候引入的)

    这与使用 padding + clipToPadding="false"特定案例有关 - 在 4.4.x 中,页脚被绘制在视图之外,但填充到填充的剪辑会显示它。

    我使用的解决方案是将页脚过度滚动 (android:overScrollFooter) 设置为透明,这在某种程度上可行...

    我的最终解决方案(注意android:footerDividersEnabled 是为了向后兼容而保留的):

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="@dimen/activity_horizontal_margin"
        android:divider="@color/divider"
        android:dividerHeight="1px"
        android:clipToPadding="false"
        android:scrollbarStyle="outsideInset"
        android:overScrollFooter="@android:color/transparent"
        android:footerDividersEnabled="false"
        />
    

    在运行 4.1.1 的 HTC One X、运行 4.4.4 的 Nexus 5 和运行 4.4.2 的三星 Galaxy S5 上进行了测试(感谢 @Dallas187)。似乎也在工作棒棒糖。 (感谢评论者!)

    【讨论】:

    • 只需确认此解决方案适用于运行 4.4.2 的三星 Galaxy S5
    • 添加 android:overScrollFooter 对我有用。在 5.0.2 和 5.1 上工作。
    • 确实如此,而且我相信你需要android:footerDividersEnabled="false" 来支持向后兼容
    【解决方案3】:

    如果你想通过代码做到这一点:

    listView.setFooterDividersEnabled(false);
    

    如果您使用的是 ListFragment,您可以通过以下方式获取列表视图:

    listFragment.getListView().setFooterDividersEnabled(false);
    

    仅评论是因为这在谷歌中排名第一

    【讨论】:

    • 感谢您的代码 - 当只有基于 XML 的解决方案时,我很难过!我正在将应用程序从 iOS 移植到 Android,到目前为止,我认为在代码中完成这一切比尝试将其全部转换为基于 XML 的布局要快得多(因为我首先在代码中定义了所有 iOS UI )。我想总有一天我必须弄清楚所有这些 XML 的东西,但不是今天 :)
    • 在 Pixel API 25 上不适合我,似乎只有 Annada 的建议可以做到。
    【解决方案4】:

    似乎下面的行在棒棒糖设备上不起作用。

    listView.setFooterDividersEnabled(false);
    

    所以需要使用下面的代码来删除列表中最后一项之后的分隔符。

    listView.setOverscrollFooter(new ColorDrawable(Color.TRANSPARENT));
    

    【讨论】:

    • 这应该是公认的答案。简单的解决方案,第一次为我工作。
    • 宾果游戏。好东西。感谢分享!
    【解决方案5】:

    使用背景 = @android:color/transparent。完美运行。您仍然可以使用行布局的背景

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 2015-05-14
      相关资源
      最近更新 更多