Bagaimana cara mengubah warna garis pemisah Android ListView?


Jawaban:


765

Anda dapat mengatur nilai ini dalam file layout xml menggunakan android:divider="#FF0000". Jika Anda mengubah warna / gambar, Anda harus mengatur / mengatur ulang ketinggian pembagi juga.

<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
Anda juga harus dapat menentukan Drawablesumber daya android:dividerjuga. Pembagi yang ada adalah gradien.
— CommonsWare

62
Jika Anda melakukannya dalam XML pastikan untuk melihat ketinggian juga menggunakan android: dividerHeight jika tidak, Anda tidak akan mendapatkan garis
— Eric Novins

8
Dari pengalaman saya, baca "harus mengatur ulang ketinggian pembagi" ke "harus mengatur tinggi pembagi"
— dpjanes

44
Saya tidak akan merekomendasikan menggunakan pxsatuan untuk menentukan ukuran di Android, menggunakan dpbukan
— Marek Sebera

12
Sepertinya mungkin ada alasan yang baik untuk menggunakan px dalam kasus khusus ini. Lihat: stackoverflow.com/a/12061612/10505
— greg7gkb

163

Atau Anda dapat mengkodekannya:

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

Semoga ini bisa membantu


Sempurna, item saya berada di latar belakang kemerahan kemerahan dan efek Anda membuatnya luar biasa !!
— Darkendorf

1
jika Anda memperpanjang ListActivity, ganti daftar saya dengan getListView ()
— Aziz

87

Untuk penggunaan garis warna tunggal:

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

Penting bahwa DividerHeight diatur setelah pembagi , kalau tidak Anda tidak akan mendapatkan apa pun.


1
Terima kasih, saya menelepon setDividerHeight () sebelum setDivider () dan tidak ada pembagi ditampilkan.
— Andreas Klöber

3
Komentar yang sangat membantu tentang urutan operasi. Saya hanya menghabiskan 2 jam mencoba membuatnya bekerja. Desain yang bagus, Android.
— Nick Frolov

12

Anda juga bisa mendapatkan warna dari sumber daya Anda dengan menggunakan:

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

10

Versi XML untuk efek keren 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>

Nama untuk bentuk itu sebagai: list_driver.xml di bawah folder yang dapat digambar

<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

Ada dua cara untuk melakukan hal yang sama:

  1. Anda dapat mengatur nilai android: divider = "# FFCCFF" di file layout xml. Dengan ini Anda juga harus menentukan ketinggian pembagi seperti android ini : 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. Anda juga dapat melakukan ini secara terprogram ...

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

2

Gunakan kode di bawah ini dalam file xml Anda

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

2
Yang terbaik adalah menjelaskan sedikit tentang mengapa solusi Anda bekerja. Jawaban kode saja mungkin memperbaiki masalah tetapi itu tidak selalu menjawab pertanyaan si penanya.
— SuperBiasedMan

1

menggunakan secara terprogram

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

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

menggunakan 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

Gunakan android:divider="#FF0000"dan android:dividerHeight="2px"untuk ListView.

<ListView 
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:divider="#0099FF"
android:dividerHeight="2px"/>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.