Come cambiare il colore della linea di separazione di ListView per Android?


400

Voglio cambiare il colore della ListViewlinea di separazione. Qualsiasi aiuto sarebbe apprezzato.

Risposte:


765

È possibile impostare questo valore in un file xml di layout utilizzando android:divider="#FF0000". Se stai cambiando colore / disegno, devi anche impostare / ripristinare l'altezza del divisore.

<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
Dovresti anche essere in grado di specificare una Drawablerisorsa android:divider. Il divisore esistente è un gradiente.
CommonsWare

62
Se lo fai in XML assicurati di vedere anche l'altezza usando Android: divisiderHeight altrimenti non otterrai alcuna linea
Eric Novins,

8
Dalla mia esperienza, leggi "dovrebbe ripristinare l'altezza del divisore" su "deve impostare l'altezza del divisore"
dpjanes,

44
Non consiglierei di utilizzare l' pxunità per definire le dimensioni in Android, utilizzare dpinvece
Marek Sebera il

12
Sembra che ci sia un buon motivo per usare px in questo caso specifico. Vedi: stackoverflow.com/a/12061612/10505
greg7gkb

163

Oppure puoi codificarlo:

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

Spero che sia d'aiuto


Perfetto, i miei oggetti erano su uno sfondo sfumato rossastro e il tuo effetto li rendeva magnifici !!
Darkendorf,

1
se estendi ListActivity, sostituisci mylist con getListView ()
Aziz

87

Per una singola linea di colore usare:

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

È importante che DividerHeight sia impostato dopo il divisore , altrimenti non otterrai nulla.


1
Grazie, ho chiamato setDividerHeight () prima di setDivider () e non è stato mostrato alcun divisore.
Andreas Klöber,

3
Commento molto utile sull'ordine delle operazioni. Ho appena trascorso 2 ore a cercare di farlo funzionare. Bel design, Android.
Nick Frolov,

12

Puoi anche ottenere i colori dalle tue risorse usando:

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

10

Versione XML per l'effetto cool @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>

Nome per quella forma come: list_driver.xml nella cartella disegnabile

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

6

Esistono due modi per fare lo stesso:

  1. Puoi impostare il valore di android: divider = "# FFCCFF" nel file xml di layout. Con questo devi anche specificare l'altezza del divisore come questo android: dividerHeight = "5px ".

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
      <ListView 
      android:id="@+id/lvMyList"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:divider="#FFCCFF"
      android:dividerHeight="5px"/>
    
    </LinearLayout>
  2. Puoi anche farlo programmaticamente ...

    ListView listView = getListView();
    ColorDrawable myColor = new ColorDrawable(
        this.getResources().getColor(R.color.myColor)
    );
    listView.setDivider(myColor);
    listView.setDividerHeight();

2

Usa il codice qui sotto nel tuo file xml

<ListView 
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="#000000" 
    android:dividerHeight="1dp">
</ListView> 

2
È meglio spiegare un po 'perché la tua soluzione funziona. Le risposte solo al codice potrebbero risolvere il problema, ma ciò non risponde necessariamente alla domanda del richiedente.
SuperBiasedMan,

1

usando programmaticamente

           // Set ListView divider color
            lv.setDivider(new ColorDrawable(Color.parseColor("#FF4A4D93")));

            // set ListView divider height
            lv.setDividerHeight(2);

usando xml

<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="#44CC00"
    android:dividerHeight="4px"/>

</LinearLayout>

0

Utilizzare android:divider="#FF0000"e android:dividerHeight="2px"per ListView.

<ListView 
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:divider="#0099FF"
android:dividerHeight="2px"/>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.