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?

deepthi
la source
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"
dasilvj
la source
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.

Amintabar
la source
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"
Sotti
la source
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);
Khalid Taha
la source
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"
  />
Saneesh
la source
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"/>
Muhammad Shafqat
la source
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.

sandeepmaaram
la source
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.

Mads Kristiansen
la source
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" 
Zia
la source
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"
Fred
la source
5

Pour ListFragment

getListView().setDivider(null)

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

Méchant homme
la source
0

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

Richard Nikolas
la source