Saya mencoba menggunakan marginBottom pada listView untuk membuat ruang antara Item listView, tetapi item tetap terpasang bersama.
Apakah itu mungkin? Jika ya, apakah ada cara khusus untuk melakukannya?
Kode saya di bawah
<LinearLayout
android:id="@+id/alarm_occurences"
android:layout_width="fill_parent"
android:orientation="vertical"
android:layout_height="fill_parent"
android:background="#EEEEFF"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView
android:id="@+id/occurences"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
Item Daftar kustom saya:
<com.android.alarm.listItems.AlarmListItem
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/alarm_item_background"
android:layout_marginBottom="10dp"
>
<CheckedTextView
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:textSize="20sp"
android:textStyle="bold"
android:typeface="serif"
android:padding="10dp"
/>
</com.android.alarm.listItems.AlarmListItem>
Bagaimana saya bisa membuat jarak antar item daftar dalam kasus ini?
Mungkin properti
divider
atau dapat memecahkan masalah Anda.dividerHeight
ListView
sumber
Meskipun solusi oleh Nik Reiman TIDAK berhasil, saya menemukan itu bukan solusi optimal untuk apa yang ingin saya lakukan. Menggunakan pembagi untuk mengatur margin memiliki masalah pembagi tidak lagi terlihat sehingga Anda tidak dapat menggunakannya untuk menunjukkan batas yang jelas antara item Anda. Juga, itu tidak menambahkan lebih banyak "area yang dapat diklik" untuk setiap item sehingga jika Anda ingin membuat item Anda dapat diklik dan item Anda tipis, akan sangat sulit bagi siapa pun untuk mengklik item karena ketinggian yang ditambahkan oleh pembagi tidak bagian dari suatu barang.
Untungnya saya menemukan solusi yang lebih baik yang memungkinkan Anda untuk menunjukkan pembagi dan memungkinkan Anda untuk menyesuaikan ketinggian setiap item menggunakan bukan margin tetapi padding. Berikut ini sebuah contoh:
ListView
Daftar barang
sumber
Anda harus membungkus
ListView
item Anda (katakanlahyour_listview_item
) di beberapa tata letak lain misalnyaLinearLayout
dan menambahkan margin keyour_listview_item
:Dengan cara ini Anda juga dapat menambahkan ruang, jika perlu, di kanan dan kiri
ListView
item.sumber
Solusi saya untuk menambah lebih banyak ruang tetapi tetap menggunakan garis horizontal adalah menambahkan
divider.xml
dires/drawable
folder dan menentukan bentuk garis di dalamnya:divider.xml
kemudian dalam daftar saya, saya merujuk pembagi saya sebagai berikut:
perhatikan
android:dividerHeight="16.0dp"
dengan menambah dan mengurangi ketinggian ini Saya pada dasarnya menambahkan lebih banyak bantalan di bagian atas dan bawah garis pembagi.Saya menggunakan halaman ini untuk referensi: http://developer.android.com/guide/topics/resources/drawable-resource.html#stroke-element
sumber
Jika Anda ingin menampilkan pembagi dengan margin dan tanpa merentangkannya - gunakan InsetDrawable (ukuran harus dalam format, kira-kira mengatakan @Nik Reiman):
ListView:
@ drawable / separator_line:
sumber
Kamu bisa menggunakan:
contoh:
sumber
Untuk aplikasi saya, saya telah melakukan ini
adil
set the divider to null
dan memberikan tinggi bagi pembagi lakukan untuk saya.Contoh:
atau
dan ini adalah hasilnya
sumber
android:divider="@android:color/transparent"
.Saya menyadari bahwa jawaban sudah dipilih, tetapi saya hanya ingin membagikan apa yang akhirnya berhasil bagi saya ketika saya mengalami masalah ini.
Saya memiliki listView di mana setiap entri dalam listView ditentukan oleh tata letaknya sendiri, mirip dengan apa yang diposting Sammy dalam pertanyaannya. Saya mencoba pendekatan yang disarankan untuk mengubah tinggi pembagi, tetapi itu tidak berakhir tampak terlalu cantik, bahkan dengan pembagi tidak terlihat. Setelah beberapa percobaan, saya cukup menambahkan sebuah
android:paddingBottom="5dip"
ke elemen tata letak TextView terakhir dalam file XML yang mendefinisikan entri listView individu.Ini akhirnya memberi saya apa yang saya coba capai melalui penggunaan
android:layout_marginBottom
. Saya menemukan solusi ini untuk menghasilkan hasil yang lebih estetis daripada mencoba meningkatkan ketinggian pembagi.sumber
Alih-alih memberi margin, Anda harus memberi padding:
ATAU
sumber
Solusi paling sederhana dengan kode OP yang ada (daftar item sudah memiliki padding) adalah menambahkan kode berikut:
Jawaban SO ini membantu saya.
Catatan: Anda mungkin menghadapi bug daur ulang item daftar terlalu cepat pada platform lama, seperti yang telah ditanyakan di sini .
sumber
dan atur
paddingTop
,paddingBottom
dandividerHeight
dengan nilai yang sama untuk mendapatkan jarak yang sama antara semua elemen dan ruang di bagian atas dan bawah daftar.Saya mengatur
clipToPadding
untukfalse
membiarkan pandangan diambil di daerah empuk ini.Saya mengatur
divider
untuk@null
menghapus garis antara elemen daftar.sumber
Juga satu cara lagi untuk meningkatkan jarak antara item daftar adalah bahwa Anda menambahkan tampilan kosong ke kode adaptor Anda dengan menyediakan atribut layout_height dengan spasi yang Anda butuhkan. Untuk misalnya untuk menambah jarak bawah di antara item daftar Anda, tambahkan tampilan dummy ini (tampilan kosong) ke akhir item daftar Anda.
Jadi ini akan memberikan jarak 15 dp antara item tampilan daftar. Anda dapat langsung menambahkan ini jika tata letak induk adalah LinearLayout dan orientasi vertikal atau mengambil langkah yang sesuai untuk tata letak lainnya. Semoga ini membantu :-)
sumber
Anda hanya perlu membuat latar belakang transparan pembagi daftar dan membuat ketinggian sesuai dengan kesenjangan yang dibutuhkan.
sumber
Saya menemukan solusi yang tidak terlalu baik untuk ini jika Anda menggunakan HorizontalListView, karena pembagi tampaknya tidak bekerja dengan itu, tapi saya pikir itu akan berfungsi baik untuk ListView yang lebih umum.
Hanya menambahkan:
dalam tampilan Layout yang Anda kembangkan di kelas adaptor akan menciptakan jarak antar item
sumber
Untuk memberi jarak antar tampilan di dalam listView, gunakan padding pada tampilan inflasi Anda.
Anda dapat menggunakan
android:paddingBottom="(number)dp"
&&android:paddingTop="(number)dp"
pada tampilan Anda atau tampilan yang Anda kembangkan di dalam tampilan daftar Anda.Solusi pembagi hanyalah perbaikan, karena suatu hari, ketika Anda ingin menggunakan warna pembagi (sekarang ini transparan) Anda akan melihat bahwa garis pembagi telah diregangkan.
sumber
Banyak dari solusi ini bekerja. Namun, jika semua yang Anda inginkan adalah dapat mengatur margin antara item, metode paling sederhana yang saya buat adalah dengan membungkus item Anda - dalam kasus Anda CheckedTextView - dalam LinearLayout dan menempatkan pemformatan margin Anda untuk item di dalamnya, bukan tata letak root. Pastikan untuk memberikan layout pembungkus ini id dan buat bersama dengan CheckedTextView Anda di adaptor Anda.
Itu dia. Akibatnya, Anda membuat margin pada level item untuk ListView. Karena ListView tidak tahu tentang tata letak item - hanya adaptor Anda yang tahu. Ini pada dasarnya mengembang bagian tata letak item yang sebelumnya diabaikan.
sumber
Ini akan membantu Anda menambah tinggi pembagi.
Jika Anda ingin menambahkan tampilan kustom, Anda dapat menambahkan tampilan kecil di tata letak item listView itu sendiri.
sumber