Интервал между элементами ListView Android

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

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

Мой код ниже

   

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

    

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

@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 не знает о каком-либо макете элемента – только ваш адаптер делает. Это в основном завышает часть макета элемента, которая ранее игнорировалась.

  • Почему эта строка xmlns: android = "http://schemas.android.com/apk/res/android" должна быть первой в XML-файле макета?
  • Есть ли способ реализовать закругленные углы к Mapfragment?
  • Динамическая форма с повторяющейся формой
  • Прокрутка EditText внутри ScrollView
  • Android. Мне нужны некоторые пояснения fragmentов к действиям и представлениям.
  • Вызывается: java.lang.UnsupportedOperationException: невозможно преобразовать в измерение: type = 0x1
  • Использование ListAdapter для заполнения LinearLayout внутри макета ScrollView
  • Как реализовать ViewPager с различными fragmentами / макетами
  • Что такое android: weightSum в android и как он работает?
  • RecyclerView развернуть / свернуть элементы
  • Использование API Google Адресов
  • Давайте будем гением компьютера.