У меня фиксированный рост ListView
. Он имеет разделитель между элементами списка, но также отображает разделители после последнего элемента списка.
Есть ли способ не отображать разделитель после последнего элемента ListView
?
Ответы:
Просто добавьте
android:footerDividersEnabled="false"
в описание ListView
layoutHeight="wrap_content"
, нижний разделитель исчезает.
Как сказал @ScootrNova, похоже, что это ведет себя по-другому (иначе багги) в android 4.4.x (я точно не знаю, когда возникла проблема)
Это связано с конкретным случаем использования padding
+ clipToPadding="false"
- в 4.4.x нижний колонтитул отрисовывается за пределами представления, но клипы к отступу показывают его.
Решение, которое я использовал, заключалось в том, чтобы установить нижний колонтитул over-scroll ( 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. (спасибо комментаторам!)
android:overScrollFooter
помогло мне. Работает на 5.0.2 и 5.1.
android:footerDividersEnabled="false"
обратная связь
Если вы хотите сделать это с помощью кода, это:
listView.setFooterDividersEnabled(false);
и если вы используете ListFragment, вы можете получить список:
listFragment.getListView().setFooterDividersEnabled(false);
Прокомментировано только потому, что это номер 1 в Google
Кажется, что строка ниже не работает на устройстве lollypop.
listView.setFooterDividersEnabled(false);
Поэтому необходимо использовать приведенный ниже код, чтобы удалить разделитель после последнего элемента в списке.
listView.setOverscrollFooter(new ColorDrawable(Color.TRANSPARENT));