Saya memiliki kode ini:
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cashItemsList"
android:cacheColorHint="#00000000"
android:divider="@drawable/list_divider"></ListView>
dimana @drawable/list_divider
:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:width="1dp"
android:color="#8F8F8F"
android:dashWidth="1dp"
android:dashGap="1dp" />
</shape>
tapi saya tidak bisa melihat pembatas apapun.
Jawaban:
Teman-teman, inilah mengapa Anda harus menggunakan 1px daripada 1dp atau 1dip: jika Anda menentukan 1dp atau 1dip, Android akan menurunkannya. Pada perangkat 120dpi, itu menjadi seperti diterjemahkan 0,75 piksel, yang dibulatkan menjadi 0. Di beberapa perangkat, itu diterjemahkan menjadi 2-3 piksel, dan biasanya terlihat jelek atau ceroboh
Untuk pembagi, 1 piksel adalah tinggi yang benar jika Anda menginginkan pembagi 1 piksel dan merupakan salah satu pengecualian untuk aturan "semuanya harus dip". Ini akan menjadi 1 piksel di semua layar. Plus, 1px biasanya terlihat lebih baik pada layar hdpi dan di atasnya
Edit "Ini bukan tahun 2012 lagi": Anda mungkin harus beralih ke dp / dip mulai dari kepadatan layar tertentu
sumber
Ini adalah solusi, tetapi berhasil untuk saya:
Membuat res / drawable / divider.xml sebagai berikut:
Dan di styles.xml untuk item listview, saya menambahkan baris berikut:
Bagian terpenting adalah memasukkan pengaturan 1px ini. Tentu saja, drawable menggunakan gradien (dengan 1px) dan itu bukan solusi optimal. Saya mencoba menggunakan stroke tetapi tidak berhasil. (Anda tampaknya tidak menggunakan gaya, jadi tambahkan saja atribut android: dividerHeight = "1px" untuk ListView.
sumber
Tambahkan
android:dividerHeight="1px"
dan itu akan berhasil:sumber
Masalah yang Anda alami berasal dari fakta bahwa Anda kehilangan android: dividerHeight, yang Anda perlukan, dan fakta bahwa Anda mencoba menentukan bobot garis dalam drawable, yang tidak dapat Anda lakukan dengan pembagi untuk beberapa alasan aneh. Pada dasarnya agar contoh Anda berhasil, Anda dapat melakukan sesuatu seperti berikut:
Buat drawable Anda baik sebagai persegi panjang atau garis, baik itu berfungsi, Anda tidak dapat mencoba mengatur dimensi apa pun di atasnya, jadi:
ATAU:
Kemudian buat gaya khusus (hanya preferensi tetapi saya ingin dapat menggunakan kembali barang)
Terakhir, nyatakan tampilan daftar Anda menggunakan gaya kustom:
Saya berasumsi Anda tahu cara menggunakan cuplikan ini, jika tidak beri tahu saya. Pada dasarnya, jawaban atas pertanyaan Anda adalah Anda tidak dapat menyetel ketebalan pembagi dalam drawable, Anda harus membiarkan lebarnya tidak ditentukan di sana dan menggunakan android: dividerHeight untuk menyetelnya.
sumber
Dari dokumen:
Sepertinya
setDividerHeight()
harus dipanggil agar pembatas muncul jika tidak memiliki tinggi intrinsiksumber
Anda
@drawable/list_divide
akan terlihat seperti ini:Dalam versi Anda, Anda menyediakan
android:width="1dp"
, cukup ubah menjadiandroid:height="1dp"
dan itu akan berfungsi!sumber
Dari dokumen :
pada dasarnya, Anda harus menempatkan sebuah file bernama
list_divider.xml
dalamres/drawable/
sehingga Anda dapat mengaksesnya sebagaiR.drawable.list_divider
; jika Anda dapat mengaksesnya dengan cara itu, maka Anda dapat menggunakanandroid:divider="@drawable/list_divider"
XML untukListView
.sumber
Beberapa orang mungkin mengalami garis yang solid. Saya mengatasi ini dengan menambahkan
android:layerType="software"
ke tampilan yang mereferensikan drawable.sumber
Dokumen android memperingatkan tentang hal-hal yang menghilang karena kesalahan pembulatan ... Mungkin coba dp daripada px, dan mungkin juga coba> 1 terlebih dahulu untuk melihat apakah itu masalah penyelesaian.
lihat http://developer.android.com/guide/practices/screens_support.html#testing
untuk bagian "Gambar dengan tinggi / lebar 1 piksel"
sumber
Saya memiliki masalah yang sama. Namun membuat tampilan 1px sepertinya tidak bekerja pada Nexus 7 asli saya. Saya perhatikan bahwa kerapatan layar adalah 213 yang kurang dari 240 yang digunakan dalam xhdpi. Jadi saya pikir perangkat itu memiliki kepadatan mdpi.
Solusi saya adalah membuatnya jadi
dimens
folder memilikidividerHeight
parameter. Saya mengaturnya ke2dp
dalamvalues-mdpi
folder tetapi1dp
divalues-hdpi
folder dll.sumber
Anda lupa "r" di ujung pembagi dalam tata letak xml pembagi Anda
Anda memanggil layout @ drawable / list_divider tetapi pembagi Anda xml diberi nama "list_divide"
sumber
setel android: dividerHeight = "1dp"
sumber