Comment supprimer des lignes entre ListViews sur Android?


401

J'utilise deux ListViews comme ceci:

<ListView
   android:id="@+id/ListView"
   android:text="@string/Website"
   android:layout_height="30px"
   android:layout_width="150px"
   android:scrollbars="none"
   android:transcriptMode="normal"/>
<ListView
   android:id="@+id/ListView1"
   android:text="@string/Website"
   android:layout_height="30px"
   android:layout_width="150px"
   android:scrollbars="none"
   android:transcriptMode="normal"/>

Il y a une ligne vide entre les deux ListViews. Comment puis-je le supprimer?


3
Avez-vous deux ListViews séparés montrant des listes différentes ou voulez-vous dire que vous avez une ligne entre les éléments dans votre ListView?
Dave Webb

S'agit-il d'une ligne "vierge" ou "noire"? Depuis que la question a été éditée par quelqu'un d'autre que l'OP. Il y a une différence entre ceux
miva2

1
@deepthi, envisageriez-vous de marquer une des réponses comme acceptée?
Antek

Réponses:


926

Pour supprimer le séparateur entre les éléments dans le même ListView, voici la solution:

getListView().setDivider(null);
getListView().setDividerHeight(0);

developer.android.com # ListView

Ou, si vous voulez le faire en XML:

android:divider="@null"
android:dividerHeight="0dp"

2
pour une raison quelconque, le définir dans le XML n'a pas fonctionné pour moi. a dû le mettre dans le code.
Jeffrey Blattman

8
A travaillé en XML pour moi. Doit mettre dans la <ListView> </Listview>. Je me demande pourquoi cela n'a pas été accepté comme la bonne réponse.
zolio

1
avons-nous besoin de faire les deux (annuler et annuler) ou est-ce juste un assez?
guness

3
@Pranav. S'il vous plaît, enseignant, écrivons sur la programmation. Je vous remercie.
Geltrude

1
Bizarrement, seul dividerHeight = 0 n'a pas fonctionné, seul divider = @ null a fonctionné. Pourquoi?
Chintan Shah

96
  1. Si vous souhaitez supprimer une ligne de séparation, utilisez ce code:

    android:divider="@null"
  2. Si vous souhaitez ajouter un espace au lieu d'une ligne de séparation:

    android:divider="@android:color/transparent"
    android:dividerHeight="5dp"

Ainsi, vous pouvez utiliser n'importe quel dessin ou couleur dans l'attribut diviseur.


65

Il existe différentes façons d'y parvenir, mais je ne sais pas laquelle est la meilleure (je ne sais même pas s'il existe une meilleure façon). Je connais au moins deux façons différentes de le faire dans un ListView:

1. Réglez le séparateur sur null:

1.1. Par programme

yourListView.setDivider(null);

1.2. XML

Cela va à l'intérieur de votre élément ListView.

android:divider="@null"

2. Définissez le séparateur sur transparent et définissez sa hauteur sur 0 pour éviter d'ajouter de l'espace entre les éléments de la liste:

2.1. Par programme:

yourListView.setDivider(new ColorDrawable(android.R.color.transparent));
yourListView.setDividerHeight(0);

2.2. XML

android:divider="@android:color/transparent"
android:dividerHeight="0dp"

1
Dans certaines situations, il semble y avoir un problème avec le simple fait de définir la couleur du séparateur sur transparent. Mes éléments ListView avaient chacun un arrière-plan uni semi-transparent. Lorsque j'utilisais la deuxième méthode pour cacher le diviseur, un "diviseur" semblait toujours apparaître. Lorsque je suis passé à la première méthode, le "diviseur" a disparu.
themarshal

28

En XML:

android:divider="@null"

Ou en Java:

listView.setDivider(null);

20

Définissez le séparateur sur null:

JAVA

  listview_id.setDivider(null);

XML

<ListView 
  android:id="@+id/listview"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:divider="@null"
  />

15
   <ListView xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/list"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:divider="@null"
  android:dividerHeight="0dp"/>

1
Bien que ce code puisse répondre à la question, fournir un contexte supplémentaire concernant la manière et / ou la raison pour laquelle il résout le problème améliorerait la valeur à long terme de la réponse.
Donald Duck

12

Vous pouvez mettre la propriété ci-dessous dans la balise listview

android:divider="@null"

(ou) par programme listview.Divider(null); ici listviewest ListViewréférence.


10

Ou en XML:

android:divider="@drawable/list_item_divider"
android:dividerHeight="1dp"

Vous pouvez utiliser une couleur pour le dessin (par exemple # ff112233), mais sachez que les versions pré-cupcake ont un bug dans lequel la couleur ne peut pas être définie. À la place, un patch 9 ou une image doivent être utilisés.


Ou vous pouvez même utiliser le drawable Android standard pour le diviseur:@android:drawable/divider_horizontal_...
racs

9

Vous pouvez essayer ce qui suit. Ça a marché pour moi ...

android:divider="@android:color/transparent"
android:dividerHeight="0dp" 

7

Je trouve plus facile de l'implémenter dans le fichier XML car il peut être plus difficile de tracer la ligne de code dans une classe avec des centaines de lignes. Pour le XML, vous pouvez utiliser "null":

android:divider="@null"

5

Pour ListFragment

getListView().setDivider(null)

après que la liste a été obtenue.


0

Si cela android:divider="@null"ne fonctionne pas, peut-être changer vos ListViews pour les vues Recycler? 

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.