Интервал между элементами ListView Android
Я попытался использовать marginBottom в спискеView, чтобы сделать пространство между элементом ListView, но все же элементы привязаны вместе.
Возможно ли это? Если да, есть ли какой-то конкретный способ сделать это?
Мой код ниже
- Изменение цвета нижней строки EditText с помощью appcompat v7
- Показать AlertDialog в любом положении экрана
- Java GUI-слушатели без AWT
- Пользовательский элемент строки для Android для ListView
- форма андроида с нижним ходом
Мой элемент списка:
Как сделать промежуток между элементами списка в этом случае?
- Как сделать виджет Qt невидимым без изменения позиции других виджетов Qt?
- Программное добавление TableRow в TableLayout не работает
- Как показать флажок андроида на правой стороне?
- Appcompatv7 - v21 Ящик для навигации, не показывающий значок гамбургера
- Как сделать ListView прозрачным в Android?
- EditText maxLines не работает - пользователь может все еще вводить больше строк, чем установлено
- Могу ли я установить «android: layout_below» во время выполнения программно?
- Ограничение высоты ListView на Android
@Asahi в значительной степени поразила гвоздь на голове, но я просто хотел добавить немного XML для всех, кто может плавать здесь позже через google:
По какой-то причине такие значения, как «10», «10,0» и «10 сс», отклоняются Android для значения dividerHeight
. Он хочет иметь число с плавающей запятой и единицу, например «10.0sp». Как отмечает @Goofyahead, вы также можете использовать независимые от экрана пиксели для этого значения (например, «10dp»).
Возможно, свойство divider
или dividerHeight
в ListView
может решить вашу проблему.
Хотя решение Nik Reiman DOES работает, я нашел, что это не оптимальное решение для того, что я хотел сделать. Использование разделителя для установки полей имело проблему с тем, что разделитель больше не будет виден, поэтому вы не сможете использовать его, чтобы показать четкую границу между вашими предметами. Кроме того, он не добавляет больше «кликабельной области» к каждому элементу, поэтому, если вы хотите сделать ваши элементы кликабельными, а ваши предметы тонкие, для кого-либо будет очень сложно щелкнуть элемент, поскольку высота, добавленная разделителем, не будет часть элемента.
К счастью, я нашел лучшее решение, которое позволяет обе показывать разделители и позволяет настраивать высоту каждого элемента, используя не поля, а заполнение. Вот пример:
Посмотреть список
Элемент списка
Вы должны обернуть элемент 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:
Вы можете использовать:
android:divider="@null" android:dividerHeight="3dp"
пример:
Я понимаю, что ответ уже был выбран, но я просто хотел поделиться тем, что в конечном итоге работало для меня, когда я столкнулся с этой проблемой.
У меня был listView, где каждая запись в listView была определена по своему собственному макету, подобно тому, что Сэмми опубликовал в своем вопросе. Я пробовал предлагаемый подход по изменению высоты разделителя, но это не выглядело слишком красивым даже с невидимым разделителем. После некоторых экспериментов я просто добавил android:paddingBottom="5dip"
к последнему элементу макета TextView в XML-файле, который определяет отдельные записи listView.
Это в конечном итоге дало мне именно то, что я пытался достичь с помощью android:layout_marginBottom
. Я нашел это решение для получения более эстетически приятного результата, чем попытка увеличить высоту разделителя.
Простейшее решение с существующим кодом OP (элементы списка уже получили дополнение) заключается в следующем:
listView.setDivider(new ColorDrawable(Color.TRANSPARENT)); //hide the divider listView.setClipToPadding(false); // list items won't clip, so padding stays
Этот ответ так помог мне.
Примечание. На старых платформах вы можете столкнуться с ошибкой перебора элементов списка, как было предложено здесь .
Для моего приложения я сделал это
и это результат
просто андроид: divider = “@ null” и предоставление высоты разделителю для меня.
Вместо того, чтобы давать маржу, вы должны дать отступы:
ИЛИ
1
1
и установите paddingTop
, paddingBottom
и dividerHeight
для того же значения, чтобы получить равное расстояние между всеми элементами и пространством в верхней и нижней dividerHeight
списка.
Я установил clipToPadding
в false
чтобы позволить рисовать представления в этой дополненной области.
Я установил divider
в @null
чтобы удалить строки между элементами списка.
Также еще один способ увеличить расстояние между элементами списка заключается в том, что вы добавляете пустой код в код адаптера, предоставляя атрибут layout_height с требуемым интервалом. Например, чтобы увеличить интервал между элементами списка, добавьте этот фиктивный вид (пустой вид) в конец ваших элементов списка.
Таким образом, это обеспечит нижнее расстояние в 15 дп между элементами списка. Вы можете напрямую добавить это, если родительский макет LinearLayout и ориентация вертикальны или предпримите соответствующие шаги для другого макета. Надеюсь это поможет 🙂
вам просто нужно сделать фон прозрачным из списка divider и сделать высоту в соответствии с вашим необходимым разрывом.
Я нашел не очень хорошее решение для этого, если вы используете HorizontalListView, так как делители не работают с ним, но я думаю, что он будет работать в любом случае для более распространенного ListView.
Просто добавив:
в самом нижнем представлении макета, который вы надуваете в classе адаптера, создаст расстояние между элементами
Чтобы задать промежуток между представлениями внутри спискаView, используйте прописку в ваших записях.
Вы можете использовать android:paddingBottom="(number)dp"
&& android:paddingTop="(number)dp"
на вашем представлении или представлениях, которые вы надуваете внутри своего списка.
Решение разделителя – это просто исправление, потому что когда-нибудь, когда вы захотите использовать цвет разделителя (теперь он прозрачный), вы увидите, что линия разделителя растянута.
Многие из этих решений работают. Однако, если все, что вам нужно, – это установить разницу между элементами, самый простой метод, который я придумал, – это обернуть ваш элемент – в вашем случае CheckedTextView – в LinearLayout и поместить в него форматирование полей для элемента, а не корневой макет. Обязательно дайте этому макету упаковки идентификатор и создайте его вместе с вашим CheckedTextView в своем адаптере.
Вот и все. Фактически вы создаете экземпляр поля на уровне элемента для ListView. Поскольку ListView не знает о каком-либо макете элемента – только ваш адаптер делает. Это в основном завышает часть макета элемента, которая ранее игнорировалась.