408 votes

Comment changer la couleur de la ligne de séparation d'une ListView Android ?

Je veux changer la couleur de ListView ligne de séparation. Toute aide serait appréciée.

771voto

jeremynealbrown Points 7588

Vous pouvez définir cette valeur dans un fichier xml de mise en page à l'aide de la fonction android:divider="#FF0000" . Si vous modifiez la couleur/le dessin, vous devez également définir/réinitialiser la hauteur du séparateur.

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">

  <ListView 
    android:id="@+id/android:list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:divider="#FFCC00"
    android:dividerHeight="4px"/>

</LinearLayout>

11 votes

Vous devriez également être en mesure de spécifier un Drawable ressource en android:divider également. La ligne de démarcation existante est en pente.

0 votes

Où se trouve le séparateur de pente existant ?

62 votes

Si vous le faites en XML, assurez-vous de voir également la hauteur en utilisant Android:dividerHeight, sinon vous n'obtiendrez pas de ligne.

165voto

Asher Aslan Points 1161

Ou vous pouvez le coder :

int[] colors = {0, 0xFFFF0000, 0}; // red for the example
myList.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
myList.setDividerHeight(1);

J'espère que cela vous aidera

0 votes

Parfait, mes articles étaient sur un fond dégradé rougeâtre et votre effet les a rendus magnifiques !

1 votes

Si vous étendez ListActivity, remplacez mylist par getListView()

90voto

htafoya Points 3207

Pour une ligne d'une seule couleur, utiliser :

list.setDivider(new ColorDrawable(0x99F10529));   //0xAARRGGBB
list.setDividerHeight(1);

Il est important que le paramètre DividerHeight soit défini après la ligne de séparation. Sinon, vous n'obtiendrez rien.

1 votes

Merci, j'ai appelé setDividerHeight() avant setDivider() et aucun séparateur n'a été affiché.

4 votes

Commentaire très utile sur l'ordre des opérations. Je viens de passer 2 heures à essayer de le faire fonctionner. Joli design, Android.

13voto

BitBlt Points 81

Vous pouvez également obtenir les couleurs à partir de vos ressources en utilisant :

dateView.setDivider(new ColorDrawable(_context.getResources().getColor(R.color.textlight)));
dateView.setDividerHeight(1);

11voto

Peter Nguyen Points 31

Version XML pour l'effet cool de @Asher Aslan.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <gradient
        android:angle="180"
        android:startColor="#00000000"
        android:centerColor="#FFFF0000"
        android:endColor="#00000000"/>

</shape>

Le nom de cette forme est : list_driver.xml dans le dossier drawable

<ListView
        android:id="@+id/category_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:divider="@drawable/list_driver"
        android:dividerHeight="5sp" />

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X