Ini adalah pertanyaan yang cukup bagus tentang tata letak item dalam ListView di Android.
Saya memiliki aktivitas dengan bilah judul di bagian atas dan ListView mengambil seluruh layar. Saya ingin ListView saya muncul dengan padding 10dp di kiri, kanan dan atas, tetapi ketika Anda menggulir ListView ke atas, saya ingin itu untuk menutup padding 10dp atas sebelum menghilang di bawah tepi pudar. Demikian pula, ketika Anda menggulir ke bawah, item daftar terakhir akan muncul dengan 10dp antara bagian bawah item daftar terakhir dan bagian bawah layar yang sebenarnya (jika Anda bertanya-tanya mengapa, itu karena ada gambar latar belakang yang cantik yang saya inginkan muncul di sekitar ListView).
Saya sudah mencoba menambahkan padding ke ListView itu sendiri, tetapi kemudian ketika Anda menggulir daftar itu menghilang di bawah tepi padding.
Saya dari latar belakang web dev, dan analoginya adalah menambahkan margin di atas item daftar pertama (dan di bawah item daftar terakhir).
sumber
getListView(). addHeaderView(capView)
dangetListView(). addHeaderView(botView)
pastikan itu dipanggil sebelum menginisialisasi isi daftar misalnya. setListAdapter (adaptor);Jawaban:
Kau menulis:
Setel
ListView's
clipToPadding
atribut menjadifalse
. Ini akan memungkinkan padding di sekitarListView
dan menggulir ke ujung tata letak (dan tidak hanya ke tepi padding).Sebuah contoh:
android:clipToPadding
adalah atribut XML dariViewGroup
, kelas dasar untuk layout dan tampilan wadah.Panggilan metode terkait adalah:
sumber
<item name="android:clipToPadding">false</item>
clipToPadding
melalui gaya tidak bekerja untuk saya, rasanya jika tidak diterapkan. Meskipun, jika saya mengaturnya langsung pada ListView itu berfungsi.android:scrollbarStyle="outsideOverlay"
juga bilah gulir melewati padding jugaListView di atas akan memiliki header dan footer padding 20 piksel.
sumber
float mDensity = getResources().getDisplayMetrics().density; int height = (int) (50 * mDensity + 0.5f); padding.setHeight(height);
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics());
Tambahkan ke jawaban @ Jakobud ...
ListView saya sudah memanfaatkan
android:divider/android:dividerHeight
properti untuk membuat celah transparan antara item listView. Hal ini memungkinkan saya untuk hanya menambahkanandroid:headerDividersEnabled
danandroid:footerDividersEnabled
properti dan mengatur pandangan Header dan Footer untuknew View(Activity.this)
.Penyederhanaan sedikit untuk kasus di mana Anda sudah memiliki pengaturan pembagi di listView.
sumber
Solusi saya menggunakan a
ListFragment
, berdasarkan solusi oleh @ Jakobud dan @ greg7gkb.sumber
@Gunnar Karlsson jawaban baik, tetapi memiliki masalah pandangan sel yang didaur ulang sebelum waktunya ketika benar-benar di belakang padding, tetapi belum sepenuhnya dari layar. Pengaturan clipToPadding = false bertanggung jawab untuk ini dan mungkin atau mungkin tidak diperbaiki di versi android masa depan. ( Saat menggunakan clipToPadding di ListView, item-item tersebut didaur ulang sebelum waktunya )
Saya punya solusi sederhana yang bagus tanpa efek samping:
android:dividerHeight="-10dip"
, kebalikan dari apa yang ada di sekitar selDibandingkan dengan jawaban yang lain, tidak perlu mengatur warna pembagi. Padding di sel paling atas dan bawah akan hadir, dan pembagi negatif akan mencegah pembagi tinggi ganda di antaranya.
sumber