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.