Интервал между элементами listView Android - PullRequest
360 голосов
/ 13 февраля 2011

Я попытался использовать marginBottom в listView, чтобы сделать пространство между элементом ListView, но все же элементы были присоединены вместе.

Возможно ли это вообще? Если да, есть ли конкретный способ сделать это?

Мой код ниже

<LinearLayout
android:id="@+id/alarm_occurences"
android:layout_width="fill_parent" 
android:orientation="vertical"
android:layout_height="fill_parent"
android:background="#EEEEFF"
xmlns:android="http://schemas.android.com/apk/res/android">

<ListView
android:id="@+id/occurences"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>

Мой пользовательский элемент списка:

<com.android.alarm.listItems.AlarmListItem
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" 
android:background="@drawable/alarm_item_background"
android:layout_marginBottom="10dp"    
>
<CheckedTextView     
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    android:textSize="20sp"
    android:textStyle="bold"
    android:typeface="serif"
    android:padding="10dp"

/>

</com.android.alarm.listItems.AlarmListItem>

Как сделать интервал между элементами списка в этом случае?

Ответы [ 17 ]

3 голосов
/ 02 декабря 2015

Для моего приложения я сделал так

 <ListView
    android:id="@+id/staff_jobassigned_listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="@null"
    android:dividerHeight="10dp">

</ListView>

просто set the divider to null и предоставление высоты делителю сделали для меня.

Пример:

android:divider="@null"

или

android:divider="@android:color/transparent"

и это результат

enter image description here

2 голосов
/ 03 апреля 2017

вам просто нужно сделать фон прозрачным из разделителя списка и высоту в соответствии с вашим необходимым зазором.

<ListView 
         android:id="@+id/custom_list"
         android:layout_height="match_parent"
         android:layout_width="match_parent"
         android:divider="#00ffffff"
         android:dividerHeight="20dp"/>
2 голосов
/ 28 августа 2015

Также еще один способ увеличить интервал между элементами списка - добавить пустой код в код адаптера, предоставив атрибуту layout_height необходимый интервал. Например, чтобы увеличить нижний интервал между элементами списка, добавьте этот фиктивный вид (пустой вид) в конец элементов списка.

<View
    android:layout_width="match_parent"
    android:layout_height="15dp"/>

Таким образом, это обеспечит нижний интервал в 15 dp между элементами представления списка. Вы можете напрямую добавить это, если родительский макет - LinearLayout, а ориентация - вертикальная, или предпримите соответствующие шаги для другого макета. Надеюсь, это поможет: -)

2 голосов
/ 02 июня 2015
<ListView
    android:clipToPadding="false"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:dividerHeight="10dp"
    android:divider="@null"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</ListView>

и установите paddingTop, paddingBottom и dividerHeight в одно и то же значение, чтобы получить одинаковый интервал между всеми элементами и пробелами в верхней и нижней частях списка.

Я установил clipToPadding на false, чтобы позволить рисовать виды в этой области.

Я установил divider в @null, чтобы удалить строки между элементами списка.

1 голос
/ 14 июня 2017

Многие из этих решений работают.Однако, если все, что вам нужно, - это установить границу между элементами, то самый простой метод, который я придумал, - это обернуть ваш элемент - в вашем случае CheckedTextView - в LinearLayout и поместить в него форматирование полей для элемента,не рут-макет.Обязательно присвойте этому макету упаковки идентификатор и создайте его вместе с CheckedTextView в своем адаптере.

Вот и все.По сути, вы создаете экземпляр поля на уровне элемента для ListView.Потому что ListView не знает ни о каком расположении элементов - только ваш адаптер знает.Это в основном раздувает ту часть макета элемента, которая раньше игнорировалась.

1 голос
/ 16 декабря 2015

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

Просто добавив:

<View
android:layout_marginBottom="xx dp/sp"/>

в представлении дна, которое вы надуете в классе адаптера, создаст интервал между элементами

1 голос
/ 24 мая 2015

Чтобы дать интервал между представлениями внутри listView, пожалуйста, используйте отступы на ваших раздуваемых представлениях.

Вы можете использовать android:paddingBottom="(number)dp" && android:paddingTop="(number)dp" для своего представления или просмотров, которые вы раздуты внутри своего списка.

Решение делителя - это просто исправление, потому что однажды, когда вы захотите использовать цвет делителя (сейчас он прозрачный), вы увидите, что линия делителя растянута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...