Разделитель исчезает из последнего элемента в списке, если добавлен элемент нижнего колонтитула - PullRequest
10 голосов
/ 14 апреля 2011

Если представление нижнего колонтитула добавлено в ListView, то разделитель исчезает из последнего элемента ListView.

Даже я установил android:footerDividersEnabled="true" с ListView, и мой нижний колонтитул просто TextTiew.

Ответы [ 5 ]

21 голосов
/ 02 августа 2011

Установка isSelectable на true не работает для меня, возможно, потому что я также звонил removeFooterView, когда мой список был загружен.

Что окончательно исправило это для меня, так это установив android:layout_height в "fill_parent" вместо "wrap_content" в ListView.

20 голосов
/ 14 апреля 2011

Реализация ListView в Android никогда не рисует разделители между отключенными элементами, которые, если вы просто вызываете метод addFooterView(View v), тогда по умолчанию ваш нижний колонтитул будет.

Вместо этого вам нужно вызватьaddFooterView(View v, Object data, boolean isSelectable) метод с isSelectable, установленным на true.Вы можете просто передать null для data объекта, если он вам не нужен.

14 голосов
/ 20 августа 2011

Это почти сработало для меня.Я был после разделителя после последнего элемента списка, но не после нижнего колонтитула, так как мой нижний колонтитул был пустым пространством.Я закончил тем, что добавил два нижних колонтитула, один из которых можно выбрать с нулевой высотой, а другой - с отступом.

TextView view = new TextView(this);
view.setLines(0);
TextView view1 = new TextView(this);
view1.setLines(4);
mListView.addFooterView(view, null, true);
mListView.addFooterView(view1, null, false);
mListView.setFooterDividersEnabled(true);
8 голосов
/ 16 сентября 2012

Попробуйте установить layout_height для ListView на match_parent:

android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#333333"
android:dividerHeight="1px"

Когда layout_height установлен на wrap_content, он может пропустить нижний разделитель:

android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="#333333"
android:dividerHeight="1px"
1 голос
/ 26 марта 2014

Пройдите сквозь стену, но надежно - вручную добавить разделитель в виде нижнего колонтитула.

ListView myListView = (ListView) view.findViewById(R.id.my_list_view);
myListView.addFooterView(getInflater().inflate(R.layout.horizontal_divider, myListView, false), null, false);
myListView.addFooterView(getInflater().inflate(R.layout.the_original_footer_view, myListView, false), null, false);

Где файл макета будет выглядеть так:

<View xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="1px"
    android:background="?android:attr/dividerVertical" />

Этот подход можно использовать для простого добавления разделителя даже после последнего нижнего колонтитула, независимо от того, можно ли его выбрать, включить или что-то еще - он просто остается там.

Обратите внимание, что высота 1px, а не 1dp. Несмотря на все рекомендации, по крайней мере на тестируемом устройстве это дает ту же высоту разделителя, что и ListView, а 1dp - нет.

...