Wie ändere ich die Farbe der Android ListView-Trennlinie?

400

Ich möchte die Farbe der ListViewTrennlinie ändern . Jede Hilfe wäre dankbar.

UMAR
quelle

Antworten:

765

Sie können diesen Wert in einer Layout-XML-Datei mit festlegen android:divider="#FF0000". Wenn Sie die Farbe / Zeichenfläche ändern, müssen Sie auch die Höhe des Teilers einstellen / zurücksetzen.

<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>
JeremyFromEarth
quelle
11
Sie sollten auch in der Lage sein, eine DrawableRessource anzugeben android:divider. Der vorhandene Teiler ist ein Farbverlauf.
CommonsWare
62
Wenn Sie es in XML tun, stellen Sie sicher, dass Sie die Höhe auch mit android: dividerHeight sehen, sonst erhalten Sie keine Linie
Eric Novins
8
Nach
44
Ich würde nicht empfehlen, pxEinheit zu verwenden, um Größen in Android zu definieren, verwenden Sie dpstattdessen
Marek Sebera
12
Es scheint, dass es in diesem speziellen Fall einen guten Grund gibt, px zu verwenden. Siehe: stackoverflow.com/a/12061612/10505
greg7gkb
163

Oder Sie können es codieren:

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

Ich hoffe es hilft

Asher Aslan
quelle
Perfekt, meine Artikel waren auf einem rötlichen Hintergrund mit Farbverlauf und Ihr Effekt hat sie großartig gemacht !!
Darkendorf
1
Wenn Sie ListActivity erweitern, ersetzen Sie mylist durch getListView ()
Aziz
87

Verwenden Sie für eine einzelne Farblinie:

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

Es ist wichtig, dass DividerHeight nach dem Divider gesetzt wird , sonst erhalten Sie nichts.

htafoya
quelle
1
Vielen Dank, ich habe setDividerHeight () vor setDivider () aufgerufen und es wurde kein Teiler angezeigt.
Andreas Klöber
3
Sehr hilfreicher Kommentar zur Reihenfolge der Operationen. Ich habe gerade 2 Stunden damit verbracht, es zum Laufen zu bringen. Schönes Design, Android.
Nick Frolov
12

Sie können die Farben auch aus Ihren Ressourcen abrufen, indem Sie Folgendes verwenden:

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

XML-Version für @Asher Aslan cooler Effekt.

<?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>

Name für diese Form als: list_driver.xml unter zeichnbarem Ordner

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

Es gibt zwei Möglichkeiten, dasselbe zu tun:

  1. Sie können den Wert von android: divider = "# FFCCFF" in der Layout-XML-Datei festlegen . Dazu müssen Sie auch die Höhe des Teilers wie dieses Android angeben : 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. Sie können dies auch programmgesteuert tun ...

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

Verwenden Sie den folgenden Code in Ihrer XML-Datei

<ListView 
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="#000000" 
    android:dividerHeight="1dp">
</ListView> 
Mahesh Suthar
quelle
2
Erklären Sie am besten ein wenig, warum Ihre Lösung funktioniert. Nur Code-Antworten können das Problem beheben, aber das beantwortet nicht unbedingt die Frage des Fragestellers.
SuperBiasedMan
1

programmatisch verwenden

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

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

mit 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>
Chanaka Weerasinghe
quelle
0

Verwenden Sie android:divider="#FF0000"und android:dividerHeight="2px"für ListView.

<ListView 
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:divider="#0099FF"
android:dividerHeight="2px"/>
Aby Mathew
quelle