Xóa dải phân cách dưới cùng của ListView android


94

Tôi có một chiều cao cố định ListView. Nó có dải phân cách giữa các mục danh sách, nhưng nó cũng hiển thị các dải phân cách sau mục danh sách cuối cùng.

Có cách nào để không hiển thị dải phân cách sau mục cuối cùng trong ListViewkhông?

Câu trả lời:


183

Chỉ cần thêm android:footerDividersEnabled="false" vào mô tả ListView của bạn


29
Điều này dường như không còn hoạt động khi bắt đầu với 4.4.2. Tôi có thể chạy cùng một ứng dụng theo nghĩa đen trên nhiều thiết bị thử nghiệm của mình (từ 2.3.7 cho đến 4.4.2) và KitKat là ứng dụng duy nhất mà điều này dường như không có tác dụng ... Có ý kiến ​​gì không? Tôi không thêm chân trang hoặc đầu trang vào ListView của mình và tôi đã sao chép điều này trên hai thiết bị (Nexus 5 và HTC One M8).
Charles Madere

11
@ScootrNova Tôi đang sử dụng 4.4.4 và khi tôi đặt chế độ xem danh sách layoutHeight="wrap_content", dải phân cách dưới cùng sẽ biến mất.
Erhannis

1
Sử dụng nền = @android: màu / minh bạch, giải quyết nó cho tôi
Stef

đã thử giải pháp này trên Android 5.1 và 7.0 và nó hoạt động hoàn hảo! Cảm ơn anh bạn.
tomalf2

83

Như @ScootrNova đã nói, điều này dường như đang hoạt động khác (còn gọi là lỗi) trong Android 4.4.x (Tôi không biết chính xác khi nào vấn đề được đưa ra)

Điều này liên quan đến trường hợp cụ thể của việc sử dụng bằng cách sử dụng padding+ clipToPadding="false"- trong 4.4.x, chân trang được vẽ bên ngoài chế độ xem nhưng clip vào phần đệm cho thấy nó.

Giải pháp tôi đã sử dụng là đặt over-scroll ( android:overScrollFooter) của chân trang thành trong suốt, cách nào đó hoạt động ...

Giải pháp cuối cùng của tôi (lưu ý android:footerDividersEnabledđược giữ lại để tương thích ngược):

<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"
    />

đã thử nghiệm trên HTC One X chạy 4.1.1, Nexus 5 chạy 4.4.4 và Samsung Galaxy S5 chạy 4.4.2 (nhờ @ Dallas187). Có vẻ như Lollipop cũng đang hoạt động. (cảm ơn những người bình luận!)


1
Chỉ cần xác nhận giải pháp này hoạt động trên Samsung Galaxy S5 chạy 4.4.2
Dallas187

1
Thêm android:overScrollFooterđã làm thủ thuật cho tôi. Làm việc trên 5.0.2 và 5.1.
Edison Spencer

thực sự, và tôi tin rằng bạn sẽ cần android:footerDividersEnabled="false"cho compat lại
Sam

18

Nếu bạn muốn làm điều này bằng mã, đó là:

listView.setFooterDividersEnabled(false);

và nếu bạn đang sử dụng ListFragment, bạn có thể xem listview bằng cách:

listFragment.getListView().setFooterDividersEnabled(false);

Chỉ được nhận xét vì điều này xuất hiện ở vị trí số 1 trên google


2
Cảm ơn bạn về mã - Tôi rất buồn khi chỉ có các giải pháp dựa trên XML! Tôi đang chuyển một ứng dụng từ iOS sang Android và cho đến nay tôi nghĩ rằng việc thực hiện tất cả bằng mã này nhanh hơn nhiều so với việc tôi đã thử chuyển đổi tất cả thành bố cục dựa trên XML (như tôi đã xác định tất cả giao diện người dùng iOS trong mã ngay từ đầu ). Tôi cho rằng một ngày nào đó tôi sẽ phải được đầu của tôi xung quanh tất cả những thứ XML này, nhưng không phải hôm nay :)
Herr Grumps

Không hoạt động với tôi trên Pixel API 25, chỉ có gợi ý của Annada dường như làm được điều đó.
Tbadams

12

Có vẻ như dòng dưới đây không hoạt động trên thiết bị lollypop.

listView.setFooterDividersEnabled(false);

Vì vậy, cần sử dụng mã bên dưới này để loại bỏ dải phân cách sau mục cuối cùng trong danh sách.

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

Đây phải là câu trả lời được chấp nhận. Giải pháp đơn giản, đã làm việc cho tôi lần đầu tiên.
Samah

0

Sử dụng background = @android: color / trong suốt. Hoạt động hoàn hảo. Bạn vẫn có thể sử dụng nền của bố cục hàng của mình

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.