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?

mkso
sumber

Jawaban:

183

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

Alex.Semeniuk
sumber
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!)

Sam
sumber
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

tmho
sumber
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));
Annada
sumber
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

stef
sumber