Mam stałą wysokość ListView
. Ma separator między elementami listy, ale wyświetla również separatory po ostatnim elemencie listy.
Czy istnieje sposób, aby nie wyświetlać separatora po ostatniej pozycji w ListView
?
Odpowiedzi:
Po prostu dodaj
android:footerDividersEnabled="false"
do opisu ListView
layoutHeight="wrap_content"
, dolny separator znika.
Jak powiedział @ScootrNova, wydaje się, że zachowuje się inaczej (inaczej buggy) w Androidzie 4.4.x (nie wiem dokładnie, kiedy problem jest wprowadzany)
Jest to związane z konkretnym przypadkiem użycia padding
+ clipToPadding="false"
- w 4.4.x stopka jest rysowana poza widokiem, ale klipsy do wypełnienia ujawniają to.
Rozwiązaniem, które zastosowałem, było ustawienie stopki over-scroll ( android:overScrollFooter
) na przezroczystą, co jakoś działa ...
Moje ostateczne rozwiązanie (uwaga, które android:footerDividersEnabled
jest zachowane ze względu na wsteczną kompatybilność):
<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"
/>
przetestowano na HTC One X z systemem 4.1.1, Nexusie 5 z systemem 4.4.4 i Samsung Galaxy S5 z systemem 4.4.2 (dzięki @ Dallas187). Wydaje się, że działa też Lollipop. (dzięki komentatorom!)
android:overScrollFooter
załatwiło mi sprawę. Pracuję nad wersją 5.0.2 i 5.1.
android:footerDividersEnabled="false"
wstecznej kompatybilności
Jeśli chcesz to zrobić kodem, to:
listView.setFooterDividersEnabled(false);
a jeśli używasz ListFragment, możesz uzyskać widok listy przez:
listFragment.getListView().setFooterDividersEnabled(false);
Skomentował tylko, ponieważ pojawia się jako nr 1 w Google
Wygląda na to, że poniższa linia nie działa na urządzeniu Lollypop.
listView.setFooterDividersEnabled(false);
Więc musisz użyć poniższego kodu, aby usunąć separator po ostatniej pozycji na liście.
listView.setOverscrollFooter(new ColorDrawable(Color.TRANSPARENT));