Supprimer le séparateur inférieur d'un Android ListView

94

J'ai une hauteur fixe ListView. Il a un séparateur entre les éléments de la liste, mais il affiche également des séparateurs après le dernier élément de la liste.

Existe-t-il un moyen de ne pas afficher de séparateur après le dernier élément ListView?

mkso
la source

Réponses:

183

Ajoutez simplement android:footerDividersEnabled="false" à votre description ListView

Alex.Semeniuk
la source
29
Cela semble ne plus fonctionner à partir de 4.4.2. Je peux exécuter littéralement la même application sur mes nombreux appareils de test (allant de 2.3.7 jusqu'à 4.4.2) et KitKat est le seul où cela semble n'avoir aucun effet ... Des idées? Je n'ajoute pas de pied de page ou d'en-tête à mon ListView et je l'ai reproduit sur deux appareils (Nexus 5 et HTC One M8).
Charles Madere
11
@ScootrNova J'utilise 4.4.4, et lorsque je règle la liste layoutHeight="wrap_content", le séparateur du bas disparaît.
Erhannis
1
Utilisez background = @android: couleur / transparent, résolvez-le pour moi
stef
essayé cette solution sur Android 5.1 et 7.0 et cela fonctionne parfaitement! Merci mec.
tomalf2
83

Comme l'a dit @ScootrNova, cela semble se comporter différemment (alias buggy) sous Android 4.4.x (je ne sais pas exactement quand le problème est introduit)

Ceci est lié au cas spécifique de l'utilisation de padding+ clipToPadding="false"- dans 4.4.x, le pied de page est dessiné en dehors de la vue mais les clips au remplissage le révèlent.

La solution que j'ai utilisée était de définir le sur-défilement du pied de page ( android:overScrollFooter) sur transparent, ce qui fonctionne en quelque sorte ...

Ma solution finale (note qui android:footerDividersEnabledest conservée pour la rétro-compatibilité):

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

testé sur un HTC One X sous 4.1.1, un Nexus 5 sous 4.4.4 et un Samsung Galaxy S5 sous 4.4.2 (grâce à @ Dallas187). Semble fonctionner aussi Lollipop. (merci aux commentateurs!)

Sam
la source
1
Il suffit de confirmer que cette solution fonctionne sur un Samsung Galaxy S5 exécutant 4.4.2
Dallas187
1
L'ajout a android:overScrollFooterfait l'affaire pour moi. Travailler sur un 5.0.2 et 5.1.
Edison Spencer
en effet, et je crois que vous aurez besoin android:footerDividersEnabled="false"d'un arrière compat
Sam
18

Si vous voulez faire cela par code, c'est:

listView.setFooterDividersEnabled(false);

et si vous utilisez un ListFragment, vous pouvez obtenir la vue de la liste par:

listFragment.getListView().setFooterDividersEnabled(false);

Uniquement commenté, car cela apparaît comme n ° 1 dans Google

tmho
la source
2
Merci pour le code - je suis triste quand il n'y a que des solutions basées sur XML! Je porte une application d'iOS vers Android, et jusqu'à présent, je pense que faire tout cela dans le code était beaucoup plus rapide que si j'avais essayé de tout convertir en une mise en page XML (comme j'ai défini toute l'interface utilisateur iOS dans le code en premier lieu ). Je suppose qu'un jour je vais devoir me
concentrer
Ne fonctionne pas pour moi sur l'API Pixel 25, seule la suggestion d'Annada semble le faire.
Tbadams
12

Il semble que la ligne ci-dessous ne fonctionne pas sur les appareils lollypop.

listView.setFooterDividersEnabled(false);

Vous devez donc utiliser ce code ci-dessous pour supprimer le séparateur après le dernier élément de la liste.

listView.setOverscrollFooter(new ColorDrawable(Color.TRANSPARENT));
Annada
la source
Cela devrait être la réponse acceptée. Solution simple, a fonctionné pour moi du premier coup.
Samah du
0

Utilisez background = @android: couleur / transparent. Fonctionne parfaitement. Vous pouvez toujours utiliser l'arrière-plan de votre disposition de ligne

stef
la source