Bagaimana cara mengubah warna garis pemisah Android ListView?

400

Saya ingin mengubah warna ListViewgaris pemisah. Bantuan apa pun akan dihargai.

UMAR
sumber

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>
JeremyFromEarth
sumber
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

Asher Aslan
sumber
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.

htafoya
sumber
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);
BitBlt
sumber
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" />
Peter Nguyen
sumber
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();
Aj 27
sumber
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> 
Mahesh Suthar
sumber
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>
Chanaka Weerasinghe
sumber
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"/>
Aby Mathew
sumber