Я попытался использовать marginBottom в listView, чтобы освободить место между listView Item, но все же элементы были прикреплены вместе.
Это вообще возможно? Если да, есть ли конкретный способ сделать это?
Мой код ниже
<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>
Как я могу сделать интервал между элементами списка в этом случае?
Возможно
divider
илиdividerHeight
собственностьListView
может решить вашу проблему.источник
Хотя решение Nik Reiman работает, я обнаружил, что оно не является оптимальным решением для того, что я хотел сделать. При использовании разделителя для установки полей возникла проблема, заключающаяся в том, что разделитель больше не будет виден, поэтому вы не можете использовать его для отображения четкой границы между вашими элементами. Кроме того, он не добавляет больше «кликабельной области» к каждому элементу, поэтому, если вы хотите, чтобы ваши элементы были кликабельными, а ваши элементы тонкими, любому будет очень трудно нажать на элемент, поскольку высота, добавленная разделителем, не часть предмета.
К счастью, я нашел лучшее решение, которое позволяет вам показывать разделители и регулировать высоту каждого элемента, используя не поля, а отступы. Вот пример:
Посмотреть список
Пункт списка
источник
Вы должны обернуть свой
ListView
элемент (скажемyour_listview_item
) в другой макет, например,LinearLayout
и добавить поле дляyour_listview_item
:Таким образом, вы также можете добавить пространство, если это необходимо, справа и слева от
ListView
элемента.источник
Мое решение добавить больше места, но сохранить горизонтальную линию, было добавить
divider.xml
вres/drawable
папку и определить форму линии внутри:divider.xml
тогда в моем списке я ссылаюсь на мой делитель следующим образом:
Обратите внимание
android:dividerHeight="16.0dp"
, увеличивая и уменьшая эту высоту, я в основном добавляю больше отступов сверху и снизу разделительной линии.Я использовал эту страницу для справки: http://developer.android.com/guide/topics/resources/drawable-resource.html#stroke-element
источник
Если вы хотите показать разделитель с полями и без его растяжения - используйте InsetDrawable (размер должен быть в формате, о котором говорит @Nik Reiman):
Посмотреть список:
@ Вытяжка / separator_line:
источник
Ты можешь использовать:
пример:
источник
Для моего приложения я сделал так
Просто
set the divider to null
и предоставление высоты делителю сделал для меня.Пример :
или
и это результат
источник
android:divider="@android:color/transparent"
.Я понимаю, что ответ уже был выбран, но я просто хотел поделиться тем, что сработало для меня, когда я столкнулся с этой проблемой.
У меня был listView, где каждая запись в listView определялась своим собственным макетом, аналогично тому, что Сэмми опубликовал в своем вопросе. Я попробовал предложенный подход к изменению высоты разделителя, но это не выглядело слишком красиво, даже с невидимым разделителем. После некоторых экспериментов я просто добавил
android:paddingBottom="5dip"
последний элемент макета TextView в XML-файл, который определяет отдельные записи listView.Это дало мне именно то, что я пытался достичь с помощью
android:layout_marginBottom
. Я нашел, что это решение дает более эстетичный результат, чем попытка увеличить высоту делителя.источник
Вместо того, чтобы давать запас, вы должны указать отступ:
ИЛИ
источник
Простейшее решение с использованием существующего кода OP (элементы списка уже имеют заполнение) заключается в добавлении следующего кода:
Этот ТАК ответ помог мне.
Примечание. Вы можете столкнуться с ошибкой перезапуска элемента списка слишком рано на старых платформах, как это было задано здесь .
источник
и установите
paddingTop
,paddingBottom
иdividerHeight
в то же значение, чтобы получить равный интервал между всеми элементами и пробелом в верхней и нижней части списка.Я установил,
clipToPadding
чтобыfalse
позволить рисовать виды в этой области.Я установил,
divider
чтобы@null
удалить линии между элементами списка.источник
Еще один способ увеличить интервал между элементами списка - добавить пустой код в код адаптера, предоставив атрибуту layout_height необходимый интервал. Например, чтобы увеличить нижний интервал между элементами списка, добавьте этот фиктивный вид (пустой вид) в конец элементов списка.
Таким образом, это обеспечит нижний интервал 15 dp между элементами представления списка. Вы можете напрямую добавить это, если родительский макет имеет LinearLayout, а ориентация вертикальная, или предпримите соответствующие шаги для другого макета. Надеюсь это поможет :-)
источник
вам просто нужно сделать фон прозрачным из разделителя списка и сделать высоту в соответствии с вашим нужным промежутком.
источник
Я нашел не очень хорошее решение для этого в случае, если вы используете HorizontalListView, так как разделители, кажется, не работают с ним, но я думаю, что это будет работать в любом случае для более общего ListView.
Просто добавляю:
в представлении нижнего макета, который вы надуете в классе адаптера, будет создан интервал между элементами
источник
Чтобы обеспечить интервал между представлениями внутри listView, пожалуйста, используйте отступы для ваших завышенных представлений.
Вы можете использовать
android:paddingBottom="(number)dp"
&&android:paddingTop="(number)dp"
в своем представлении или просмотрах, которые вы надуваете внутри своего списка.Решение делителя - это просто исправление, потому что однажды, когда вы захотите использовать цвет делителя (сейчас он прозрачный), вы увидите, что линия делителя растянута.
источник
Многие из этих решений работают. Однако, если все, что вам нужно, - это установить границу между элементами, то самый простой метод, который я придумал, - это обернуть ваш элемент - в вашем случае CheckedTextView - в LinearLayout и поместить в него форматирование полей для элемента, не рут-макет. Обязательно дайте этому макету упаковки идентификатор и создайте его вместе с CheckedTextView в своем адаптере.
Вот и все. По сути, вы создаете экземпляр поля на уровне элемента для ListView. Потому что ListView не знает ни о каком элементе макета - знает только ваш адаптер. Это в основном раздувает ту часть макета элемента, которая раньше игнорировалась.
источник
Это поможет вам добавить высоту делителя.
Если вы хотите добавить пользовательское представление, вы можете добавить небольшое представление в макет элемента listView.
источник