Удалите нижний разделитель андроида ListView

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

Есть ли способ не отображать разделитель после последнего элемента в ListView?

Ответ 1

Просто добавьте android:footerDividersEnabled="false" к описанию ListView

Ответ 2

Как сказал @ScootrNova, это похоже на поведение по-разному (a.k.a buggy) в 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. (спасибо комментаторам!)

Ответ 3

Если вы хотите сделать это по коду, это:

listView.setFooterDividersEnabled(false);

и если вы используете ListFragment, вы можете получить listview:

listFragment.getListView().setFooterDividersEnabled(false);

Только прокомментировано, потому что это выглядит как # 1 в google

Ответ 4

Похоже, что линия не работает на устройстве lollypop.

listView.setFooterDividersEnabled(false);

Поэтому необходимо использовать этот ниже код для удаления разделителя после последнего элемента в списке.

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