Bagaimana cara membuat ListView dengan sudut bulat di Android?
android
android-layout
android-listview
Legenda
sumber
sumber
Jawaban:
Berikut adalah salah satu cara melakukannya (Terima kasih untuk Dokumentasi Android!):
Tambahkan berikut ini ke dalam file (katakan customshape.xml) dan kemudian tempatkan di (res / drawable / customshape.xml)
Setelah Anda selesai membuat file ini, cukup setel latar belakang di salah satu cara berikut:
Melalui Kode:
listView.setBackgroundResource(R.drawable.customshape);
Melalui XML , cukup tambahkan atribut berikut ke wadah (mis: LinearLayout atau bidang apa pun):
Semoga seseorang menemukan itu berguna ...
sumber
Meskipun itu berhasil, ia mengeluarkan seluruh warna latar belakang juga. Saya sedang mencari cara untuk melakukan hanya perbatasan dan hanya mengganti kode tata letak XML dengan yang satu ini dan saya baik untuk pergi!
sumber
@ kris-van-bael
Bagi mereka yang memiliki masalah dengan sorotan pemilihan untuk baris atas dan bawah di mana persegi panjang latar belakang muncul pada pilihan Anda perlu mengatur pemilih untuk tampilan daftar Anda ke warna transparan.
Di color.xml cukup tambahkan yang berikut -
sumber
android:cacheColorHint="@android:color/transparent"
Jawaban lain sangat berguna, terima kasih kepada penulis!
Tapi saya tidak bisa melihat bagaimana mengkustomisasi persegi panjang saat menyorot item pada pilihan daripada menonaktifkan highlight @alvins @bharat dojeha.
Berikut ini berfungsi bagi saya untuk membuat wadah item tampilan daftar bulat tanpa garis besar dan abu-abu terang saat dipilih dengan bentuk yang sama:
Xml Anda perlu mengandung pemilih seperti misalnya (dalam res / drawable / customshape.xml):
Kemudian Anda perlu menerapkan daftar adaptor dan mengganti metode getView untuk mengatur pemilih kustom sebagai latar belakang
dan perlu juga 'menyembunyikan' persegi panjang pemilih default misalnya di onCreate (saya juga menyembunyikan garis pembagi abu-abu tipis saya di antara item):
Pendekatan ini memecahkan solusi umum untuk drawables, tidak hanya ListViewItem dengan berbagai status pemilihan.
sumber
Memperbarui
Solusinya hari ini adalah dengan menggunakan
CardView
dengan dukungan untuk sudut bulat bawaan.Jawaban asli *
Cara lain yang saya temukan adalah untuk menutupi tata letak Anda dengan menggambar gambar di atas tata letak. Mungkin membantu Anda. Lihat Android XML sudut terpotong bulat
sumber
Namun solusi lain untuk seleksi menyoroti masalah dengan item pertama, dan terakhir dalam daftar:
Tambahkan padding ke atas dan bawah latar belakang daftar Anda sama dengan atau lebih besar dari jari-jari. Ini memastikan sorotan pemilihan tidak tumpang tindih dengan kurva sudut Anda.
Ini adalah solusi termudah ketika Anda membutuhkan penyorotan seleksi yang tidak transparan.
sumber
sebenarnya, saya pikir solusi terbaik dijelaskan pada tautan ini:
http://blog.synyx.de/2011/11/android-listview-with-rounded-corners/
singkatnya, ia menggunakan latar belakang yang berbeda untuk item atas, tengah dan bawah, sehingga yang atas dan bawah akan dibulatkan.
sumber
Ini sangat berguna bagi saya. Saya ingin menyarankan solusi lain untuk menyorot dengan sempurna sudut-sudut membulat jika Anda menggunakan milik Anda sendiri
CustomAdapter
.Mendefinisikan File XML
Pertama-tama, masuk ke dalam folder yang dapat digambar dan buat 4 bentuk berbeda:
shape_top
bentuk_normal
shape_bottom
shape_rounded
Sekarang, buat tata letak baris yang berbeda untuk setiap bentuk, yaitu untuk
shape_top
:Anda juga dapat melakukan ini dengan mengubah latar belakang secara terprogram.
Dan menentukan pemilih untuk setiap daftar berbentuk, yaitu untuk
shape_top
:Ubah CustomAdapter Anda
Terakhir, tentukan opsi tata letak di dalam Anda
CustomAdapter
:Dan itu selesai!
sumber
untuk membuat border, Anda harus membuat file xml lain dengan properti solid dan sudut di folder drawable dan menyebutnya di latar belakang
sumber
Saya menggunakan tampilan kustom yang saya tata letak di atas yang lain dan yang hanya menggambar 4 sudut kecil dengan warna yang sama dengan latar belakang. Ini berfungsi apa pun konten tampilan dan tidak mengalokasikan banyak memori.
sumber