删除android ListView的底部分隔符

mks*_*kso 94 android listview divider

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

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

小智 183

只需添加 android:footerDividersEnabled="false" 到ListView描述中即可

  • 这似乎不再适用于4.4.2.我可以在我的许多测试设备上运行相同的应用程序(范围从2.3.7一直到4.4.2)而KitKat是唯一一个似乎没有效果的应用程序......任何想法?我没有在我的ListView中添加页脚或标题,我在两台设备(Nexus 5和HTC One M8)上重现了这一点. (29认同)
  • @ScootrNova我正在使用4.4.4,当我设置listview的`layoutHeight ="wrap_content"`时,底部分隔符消失了. (11认同)

Sam*_*Sam 82

正如@ScootrNova所说,这似乎在Android 4.4.x中表现不同(也就是bug)(我不知道问题何时出现)

这与在4.4.x中使用+ - 的特定情况有关,页脚在视图外部绘制,但是填充的剪辑显示它.paddingclipToPadding="false"

我使用的解决方案是将页脚设置为over-scroll(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"
    />
Run Code Online (Sandbox Code Playgroud)

在运行4.1.1的HTC One X,运行4.4.4的Nexus 5和运行4.4.2的三星Galaxy S5上测试(感谢@ Dallas187).似乎也在工作Lollipop.(感谢评论者!)

  • 添加`android:overScrollFooter` 对我有用。在 5.0.2 和 5.1 上工作。 (2认同)

tmh*_*mho 18

如果你想通过代码执行此操作:

listView.setFooterDividersEnabled(false);
Run Code Online (Sandbox Code Playgroud)

如果你正在使用ListFragment,你可以通过以下方式获得listview:

listFragment.getListView().setFooterDividersEnabled(false);
Run Code Online (Sandbox Code Playgroud)

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

  • 感谢您的代码 - 当只有基于XML的解决方案时,我感到很难过!我正在将应用程序从iOS移植到Android,到目前为止,我认为在代码中执行此操作要比我尝试将其全部转换为基于XML的布局要快得多(因为我首先在代码中定义了所有iOS UI) ).我想有一天我将不得不考虑所有这些XML的东西,但不是今天:) (2认同)

Ann*_*ada 12

看来下线不适用于lollypop设备.

listView.setFooterDividersEnabled(false);
Run Code Online (Sandbox Code Playgroud)

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

listView.setOverscrollFooter(new ColorDrawable(Color.TRANSPARENT));
Run Code Online (Sandbox Code Playgroud)