Hapus pembatas bawah ListView android


94

Saya memiliki tinggi yang tetap ListView. Ini memiliki pemisah antara item daftar, tetapi juga menampilkan pemisah setelah item daftar terakhir.

Apakah ada cara untuk tidak menampilkan pembatas setelah item terakhir masuk ListView?

Jawaban:


183

Cukup tambahkan android:footerDividersEnabled="false" ke deskripsi ListView Anda


29
Ini tampaknya tidak berfungsi lagi mulai 4.4.2. Saya dapat menjalankan aplikasi yang sama di banyak perangkat pengujian saya (mulai dari 2.3.7 hingga 4.4.2) dan KitKat adalah satu-satunya yang tampaknya tidak berpengaruh ... Ada ide? Saya tidak menambahkan footer atau header ke ListView saya dan saya telah mereproduksi ini di dua perangkat (Nexus 5 dan HTC One M8).
Charles Madere

11
@ScootrNova Saya menggunakan 4.4.4, dan ketika saya menyetel tampilan daftar layoutHeight="wrap_content", pembatas bawah menghilang.
Erhannis

1
Gunakan background = @android: color / transparent, selesaikan untuk saya
stef

mencoba solusi ini di android 5.1 dan 7.0 dan bekerja dengan sempurna! Terima kasih sobat.
tomalf2

83

Seperti yang dikatakan @ScootrNova, ini tampaknya berperilaku berbeda (alias buggy) di android 4.4.x (saya tidak tahu persis kapan masalah muncul)

Ini terkait dengan kasus khusus penggunaan padding+ clipToPadding="false"- di 4.4.x footer digambar di luar tampilan tetapi klip ke padding mengungkapkannya.

Solusi yang saya gunakan adalah mengatur footer over-scroll ( android:overScrollFooter) menjadi transparan yang entah bagaimana berfungsi ...

Solusi terakhir saya (catatan yang android:footerDividersEnableddisimpan untuk kompatibilitas kembali):

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/activity_horizontal_margin"
    android:divider="@color/divider"
    android:dividerHeight="1px"
    android:clipToPadding="false"
    android:scrollbarStyle="outsideInset"
    android:overScrollFooter="@android:color/transparent"
    android:footerDividersEnabled="false"
    />

diuji pada HTC One X menjalankan 4.1.1, Nexus 5 menjalankan 4.4.4 dan Samsung Galaxy S5 menjalankan 4.4.2 (terima kasih kepada @ Dallas187). Sepertinya Lollipop juga berfungsi. (terima kasih kepada pemberi komentar!)


1
Hanya mengonfirmasi bahwa solusi ini berfungsi pada Samsung Galaxy S5 yang menjalankan 4.4.2
Dallas187

1
Menambahkan android:overScrollFootermelakukan trik untuk saya. Bekerja pada 5.0.2 dan 5.1.
Edison Spencer

memang, dan saya yakin Anda akan membutuhkan android:footerDividersEnabled="false"kompat belakang
Sam

18

Jika Anda ingin melakukan ini dengan kode itu:

listView.setFooterDividersEnabled(false);

dan jika Anda menggunakan ListFragment, Anda bisa mendapatkan listview dengan:

listFragment.getListView().setFooterDividersEnabled(false);

Hanya dikomentari karena ini muncul sebagai # 1 di google


2
Terima kasih untuk kodenya - Saya sedih ketika hanya ada solusi berbasis XML! Saya mem-porting aplikasi dari iOS ke Android, dan sejauh ini saya pikir melakukan ini semua dalam kode jauh lebih cepat daripada jika saya mencoba mengubah semuanya menjadi tata letak berbasis XML (seperti yang saya definisikan semua UI iOS dalam kode di tempat pertama. ). Saya kira suatu hari saya harus
memikirkan

Tidak berfungsi untuk saya di Pixel API 25, hanya saran Annada yang tampaknya berhasil.
Tbadams

12

Tampaknya baris di bawah ini tidak berfungsi pada perangkat lollypop.

listView.setFooterDividersEnabled(false);

Jadi perlu menggunakan kode di bawah ini untuk menghapus pembagi setelah item terakhir dalam daftar.

listView.setOverscrollFooter(new ColorDrawable(Color.TRANSPARENT));

Ini harus menjadi jawaban yang diterima. Solusi sederhana, bekerja untuk saya tembakan pertama.
Samah

0

Gunakan background = @android: color / transparent. Bekerja dengan sempurna. Anda masih dapat menggunakan latar belakang tata letak baris Anda

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.