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?

mkso
quelle

Antworten:

183

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

Alex.Semeniuk
quelle
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!)

Sam
quelle
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

tmho
quelle
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));
Annada
quelle
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

stef
quelle