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


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>

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


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.


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);

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" />

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();

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> 

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>

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"/>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.