Entfernen Sie den unteren Teiler einer Android ListView


94

Ich habe eine feste Höhe ListView . Es hat einen Teiler zwischen Listenelementen, aber es werden auch Teiler nach dem letzten Listenelement angezeigt.

Gibt es eine Möglichkeit, nach dem letzten Element in keinen Teiler anzuzeigen ListView?

Antworten:


183

Fügen Sie einfach android:footerDividersEnabled="false" auf Ihre Listview Beschreibung


29
Dies scheint ab 4.4.2 nicht mehr zu funktionieren. Ich kann buchstäblich dieselbe App auf meinen vielen Testgeräten ausführen (von 2.3.7 bis 4.4.2) und KitKat ist die einzige, bei der dies keine Auswirkungen zu haben scheint ... Irgendwelche Ideen? Ich füge meiner ListView keine Fußzeile oder Kopfzeile hinzu und habe dies auf zwei Geräten (Nexus 5 und HTC One M8) reproduziert.
Charles Madere

11
@ScootrNova Ich verwende 4.4.4 und wenn ich die Listenansichten einstelle layoutHeight="wrap_content", verschwindet der untere Teiler.
Erhannis

1
Verwenden Sie Hintergrund = @android: Farbe / transparent, löste es für mich
stef

habe diese lösung auf android 5.1 und 7.0 ausprobiert und sie funktioniert perfekt! Danke, Mann.
Tomalf2

83

Wie @ScootrNova sagte, scheint sich dies in Android 4.4.x anders zu verhalten (auch bekannt als Buggy) (ich weiß nicht genau, wann das Problem auftritt)

Dies hängt mit dem speziellen Fall der Verwendung von padding+ clipToPadding="false"- in 4.4.x zusammen. Die Fußzeile wird außerhalb der Ansicht gezeichnet, aber Clips zum Auffüllen zeigen dies.

Die Lösung, die ich verwendet habe, war, die Fußzeile over-scroll ( android:overScrollFooter) auf transparent zu setzen, was irgendwie funktioniert ...

Meine endgültige Lösung (Hinweis android:footerDividersEnabledzur Rückkompatibilität):

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

getestet auf einem HTC One X mit 4.1.1, einem Nexus 5 mit 4.4.4 und einem Samsung Galaxy S5 mit 4.4.2 (dank @ Dallas187). Scheint auch Lollipop zu arbeiten. (Danke an die Kommentatoren!)


1
Nur zu bestätigen, dass diese Lösung auf einem Samsung Galaxy S5 mit 4.4.2
Dallas187

1
Das Hinzufügen android:overScrollFooterhat den Trick für mich getan. Arbeiten an 5.0.2 und 5.1.
Edison Spencer

in der Tat, und ich glaube, Sie werden android:footerDividersEnabled="false"für Rückenkompatibilität brauchen
Sam

18

Wenn Sie dies per Code tun möchten, ist es:

listView.setFooterDividersEnabled(false);

und wenn Sie ein ListFragment verwenden, können Sie die Listenansicht erhalten, indem Sie:

listFragment.getListView().setFooterDividersEnabled(false);

Nur kommentiert, da dies in Google die Nummer 1 ist


2
Vielen Dank für den Code - ich werde traurig, wenn es nur XML-basierte Lösungen gibt! Ich portiere eine App von iOS auf Android, und bis jetzt war dies meiner Meinung nach viel schneller als wenn ich versucht hätte, alles in ein XML-basiertes Layout zu konvertieren (da ich zunächst die gesamte iOS-Benutzeroberfläche in Code definiert habe) ). Ich nehme an, eines Tages muss ich mich mit all dem XML-Zeug beschäftigen, aber nicht heute :)
Herr Grumps

Ich arbeite nicht an Pixel API 25, nur Annadas Vorschlag scheint es zu tun.
Tbadams

12

Es scheint, dass die folgende Zeile auf einem Lollypop-Gerät nicht funktioniert.

listView.setFooterDividersEnabled(false);

Verwenden Sie daher den folgenden Code, um den Teiler nach dem letzten Element in der Liste zu entfernen.

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

Dies sollte die akzeptierte Antwort sein. Einfache Lösung, arbeitete für mich beim ersten Schuss.
Samah

0

Verwenden Sie background = @android: color / transparent. Funktioniert perfekt. Sie können weiterhin den Hintergrund Ihres Zeilenlayouts verwenden

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.