删除Android ListView的底部分隔线


94

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

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

Answers:


183

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


29
从4.4.2开始,这似乎不再起作用。我实际上可以在我的许多测试设备上运行相同的应用程序(从2.3.7一直到4.4.2),并且KitKat是唯一一个似乎没有效果的应用程序...有什么想法吗?我没有在我的ListView中添加页脚或页眉,而是在两个设备(Nexus 5和HTC One M8)上复制了它。
查尔斯·马德雷

11
@ScootrNova我正在使用4.4.4,当我设置列表视图时layoutHeight="wrap_content",底部的分隔线消失了。
Erhannis 2014年

1
使用background = @android:color / transparent,为我解决了问题
stef,

在android 5.1和7.0上尝试了这个解决方案,它完美地工作!谢啦。
tomalf2 '18

83

就像@ScootrNova所说的那样,这在android 4.4.x中似乎表现出了不同(aka buggy)(我不确切知道何时引入问题)。

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

我使用的解决方案是将页脚过度滚动(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)。似乎也在工作棒棒糖。(感谢评论者!)


1
只需确认此解决方案即可在运行4.4.2的三星Galaxy S5上正常运行
Dallas187

1
添加android:overScrollFooter对我有用。在5.0.2和5.1上工作。
爱迪生斯宾塞

的确如此,我相信您需要android:footerDividersEnabled="false"进行反兼容性
山姆

18

如果要通过代码执行此操作,则为:

listView.setFooterDividersEnabled(false);

如果您使用的是ListFragment,则可以通过以下方式获取listview:

listFragment.getListView().setFooterDividersEnabled(false);

只发表评论,因为它在Google中排名第一


2
谢谢您提供的代码-当只有基于XML的解决方案时,我会很难过!我正在将一个应用程序从iOS移植到Android,到目前为止,我认为用代码完成所有操作比尝试将其全部转换为基于XML的布局要快得多(因为我首先在代码中定义了所有iOS UI) )。我想有一天我必须全神贯注于所有这些XML东西,但是今天不是:)
Herr Grumps 2012年

在Pixel API 25上无法为我工作,只有Annada的建议似乎可以解决。
塔巴丹斯(Tbadams)'18年

12

似乎以下行在lollypop设备上不起作用。

listView.setFooterDividersEnabled(false);

因此需要使用以下代码删除列表中最后一项之后的分隔线。

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

这应该是公认的答案。简单的解决方案,对我来说是第一枪。
萨玛

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.