Intereting Posts
Подключение к USB-устройству Android в контейнере Docker через adb Android: как заставить findViewById (R.id.xxx) работать в классе, наследующем / расширяющемся из класса View? Как постоянно обнаруживать соседние местоположения маркеров из текущего местоположения в Google Maps android? Запуск автономной библиотеки на Android L. Ошибка: поддерживаются только независимые исполняемые файлы (PIE) Как программно загрузить Html-страницу в android и получить ее Html? Объясните определения этих флагов (SPAN_COMPOSING, SPAN_USER и т. Д.) Из Spanned interface Как я могу предотвратить программирование устройства Android? Android 4.0 ICS Webview с «Неизвестная ошибка хрома: -324» Планшет Gmail, такой как элементы Actionbar Android.support.v4.app.FragmentManager и android.app.FragmentManager в ViewPager Что такое firebase и как использовать его в Android? Как определить общие свойства Android для всех модулей с помощью gradle Android – отключить кнопку MyLocation на карте google Фрагмент без прокрутки в ViewPager внутри CoordinatorLayout Android – как отменить регистрацию получателя, созданного в манифесте?

Сепаратор (разделитель) после последнего элемента списка ListView

Когда я создаю простой макет с только ListView в нем, после последнего элемента нет разделителя , который выглядит немного уродливым.

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" /> </RelativeLayout> 

Введите описание изображения здесь

Тем не менее, я обнаружил, что разделитель отображается после последнего элемента, если я добавлю еще одно представление в список listview и android:layout_above атрибут android:layout_above для списка.

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/bottom" android:layout_alignParentTop="true" /> <TextView android:id="@+id/bottom" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="@android:color/holo_blue_dark" android:text="Bottom" /> </RelativeLayout> 

Введите описание изображения здесь

Почему listview ведет себя так? Как я могу получить разделитель после последнего элемента в макете, который содержит только список?

Solutions Collecting From Web of "Сепаратор (разделитель) после последнего элемента списка ListView"

Ответ очень прост: вы должны изменить android:layout_height="wrap_content" на android:layout_height="match_parent" в вашем ListView .

Вероятно, вы можете догадаться, почему это происходит.

Вы пробовали это?

 android:footerDividersEnabled="true" 

Если не попробовать это

 <View android:background="#00ff00" android:layout_width="fill_parent" android:layout_height="3dp" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/YOUR_LIST_ID" /> 

Добавьте пустой вид сверху (и / или снизу), чтобы создать разделитель сверху (или снизу)

 myList.addHeaderView(new View(context)); myList.addFooterView(new View(context)); 

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

Это все еще взломать, но это делает последний разделитель похожим на другой, поэтому лучше попытаться вручную создать горизонтальную линию, пытаясь угадать правильный цвет и размеры.

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@+id/invisible" android:layout_alignParentTop="true" /> <View android:id="@+id/invisible" android:layout_width="match_parent" android:layout_height="0dp" android:layout_alignParentBottom="true" /> </RelativeLayout> 

Я делаю что-то похожее на то, что описывает @Natix, но вместо того, чтобы возиться с содержащим макетом списка, я просто добавляю пустое представление в виде нижнего колонтитула в списке через ListView.addFooterView ()

Это выглядит несколько иначе, когда отображается ваш список, если вы его кодируете так. Но даже вы можете следовать этому тоже.

Сначала определите стиль с именем Line

 <style name="Line"> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">2px</item> <item name="android:background">@color/white</item> </style> 

// В указанном выше стиле вы можете изменить высоту строки в соответствии с вашим требованием.

Везде, где вы хотите использовать указанную выше строку, вы можете объявить ее так, как это, в вашем XML-файле.

 <LinearLayout android:orientation = "vertical" ....................... ............................> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <View style="@style/Line"/> </LinearLayout> 

Вышеприведенный код создает строку под списком. Вышеприведенный код наиболее полезен, когда вы хотите использовать его в разных местах вашего проекта. Или, если хотите только в одном месте, вы можете сделать это так.

  <LinearLayout android:orientation = "vertical" ....................... ............................> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <View android:layout_width="fill_parent" android:layout_height="1px" android:background="#20b2aa" /> </LinearLayout> 

Надеюсь это поможет. Кстати, причина неопределенная и даже однажды я искал это, и я последовал этому пути, который я объяснил выше.