web-dev-qa-db-fra.com

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

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

Est-il possible de ne pas afficher de séparateur après le dernier élément de ListView?

93
mkso

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

182
Alex.Semeniuk

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

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

La solution que j'ai utilisée consistait à définir le survol de pied de page (Android:overScrollFooter) sur transparent, ce qui fonctionne d'une manière ou d'une autre ...

Ma solution finale (notez que Android:footerDividersEnabled est conservé pour la compatibilité avec les versions antérieures):

<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 travailler aussi Lollipop. (merci aux commentateurs!)

79
Sam

Si vous voulez le faire par code c'est:

listView.setFooterDividersEnabled(false);

et si vous utilisez un ListFragment, vous pouvez obtenir la listview en:

listFragment.getListView().setFooterDividersEnabled(false);

Seulement commenté parce que cela apparaît comme le n ° 1 dans google

18
tmho

Il semble que la ligne ci-dessous ne fonctionne pas sur le périphérique Lollypop.

listView.setFooterDividersEnabled(false);

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

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

Utilisez background = @Android: color/transparent. Marche parfaitement. Vous pouvez toujours utiliser l'arrière-plan de votre mise en ligne

0
stef