Видаліть нижній роздільник андроїда ListView


94

У мене фіксована висота ListView. Він має роздільник між елементами списку, але також відображає роздільники після останнього елемента списку.

Чи є спосіб не відображати дільник після останнього елемента в ListView?

Відповіді:


183

Просто додайте android:footerDividersEnabled="false" до свого опису ListView


29
Здається, це вже не працює, починаючи з 4.4.2. Я можу запустити буквально один і той же додаток на багатьох своїх тестових пристроях (починаючи від 2.3.7 і закінчуючи 4.4.2), і KitKat - єдиний, де це, здається, не має ефекту ... Будь-які ідеї? Я не додаю нижній колонтитул або заголовок до свого ListView, і я відтворив це на двох пристроях (Nexus 5 та HTC One M8).
Charles Madere

11
@ScootrNova Я використовую 4.4.4, і коли я встановлюю перегляд списку layoutHeight="wrap_content", нижній дільник зникає.
Ерханніс

1
Використовуйте background = @android: color / transparent, вирішив це для мене
stef

спробував це рішення на Android 5.1 і 7.0, і воно чудово працює! Дякую людино.
tomalf2

83

Як сказав @ScootrNova, здається, це поводиться по-іншому (він же глючний) в android 4.4.x (я не знаю точно, коли проблема введена)

Це пов’язано з конкретним випадком використання за допомогою padding+ clipToPadding="false"- у 4.4.x нижній колонтитул намальований за межами подання, але кліпи для заповнення виявляють це.

Рішенням, яке я використовував, було встановити нижній колонтитул над прокруткою ( android:overScrollFooter) на прозорий, який так чи інакше працює ...

Моє остаточне рішення (примітка, яке android:footerDividersEnabledзберігається для зворотної сумісності):

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

протестовано на HTC One X з версією 4.1.1, Nexus 5 з операційною системою 4.4.4 та Samsung Galaxy S5 з операційною системою 4.4.2 (завдяки @ Dallas187). Здається, теж працює Lollipop. (спасибі коментаторам!)


1
Тільки підтвердження того, що це рішення працює на Samsung Galaxy S5, що працює 4.4.2
Dallas187,

1
Додавання android:overScrollFooterзробило для мене фокус. Робота над версіями 5.0.2 та 5.1.
Едісон Спенсер,

справді, і я вважаю, що вам знадобиться android:footerDividersEnabled="false"задній компарт
Сем

18

Якщо ви хочете зробити це за допомогою коду, це:

listView.setFooterDividersEnabled(false);

і якщо ви використовуєте ListFragment, ви можете отримати listview за допомогою:

listFragment.getListView().setFooterDividersEnabled(false);

Коментується лише тому, що це стає першим у Google


2
Дякую за код - мені стає сумно, коли є лише рішення на основі XML! Я переношу додаток з iOS на Android, і до цього часу я думаю, що робити все це в коді було набагато швидше, ніж якби я спробував перетворити все це на XML-макет (як я визначив весь інтерфейс iOS у коді в першу чергу ). Я гадаю, одного разу мені доведеться розібратися з усіма цими XML-матеріалами, але не сьогодні :)
Herr Grumps

Мені не працює на Pixel API 25, схоже, це робить лише пропозиція Аннади.
Тбадамс

12

Здається, під рядком не працює на пристрої льодяник.

listView.setFooterDividersEnabled(false);

Тому потрібно використовувати цей наведений нижче код, щоб видалити дільник після останнього елемента у списку.

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

Це має бути прийнятою відповіддю. Просте рішення, для мене спрацював перший постріл.
Самах

0

Використовуйте background = @android: колір / прозорий. Працює ідеально. Ви все ще можете використовувати тло макета рядка

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.