删除 android ListView 的底部分隔符

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

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

34139 次浏览

Just add android:footerDividersEnabled="false" to your ListView description

If you want to do this by code it's:

listView.setFooterDividersEnabled(false);

and if you're using a ListFragment you can get the listview by:

listFragment.getListView().setFooterDividersEnabled(false);

Only commented because this comes up as #1 in google

As @ScootrNova said, this seems to be behaving differently (a.k.a buggy) in android 4.4.x (I don't know exactly when the problem is introduced)

This is related to the specific case of using using padding + clipToPadding="false" - in 4.4.x the footer is drawn outside of the view but clips to padding reveals it.

The solution I used was to set the footer over-scroll (android:overScrollFooter) to transparent which somehow works...

My final solution (note that android:footerDividersEnabled is kept for back-compatibility):

<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"
/>

tested on a HTC One X running 4.1.1, a Nexus 5 running 4.4.4 and a Samsung Galaxy S5 running 4.4.2 (thanks to @Dallas187). Seems to be working Lollipop too. (thanks to commenters!)

It seems below line does not work on lollypop device.

listView.setFooterDividersEnabled(false);

So need to use this below code to remove divider after last item in the list.

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

Use background = @android:color/transparent. Works perfectly. You can still use the background of your row layout