Я разрабатываю приложение для Android, где я использую RecyclerView
. Мне нужно добавить разделитель в RecyclerView
. Я пытался добавить -
recyclerView.addItemDecoration(new
DividerItemDecoration(getActivity(),
DividerItemDecoration.VERTICAL_LIST));
ниже мой код XML -
<android.support.v7.widget.RecyclerView
android:id="@+id/drawerList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
/>
android
android-recyclerview
material-design
Sofquestion 8
источник
источник
Ответы:
В обновлении за октябрь 2016 года библиотека поддержки v25.0.0 теперь имеет стандартную реализацию основных горизонтальных и вертикальных разделителей!
https://developer.android.com/reference/android/support/v7/widget/DividerItemDecoration.html
источник
if(parent.getChildAdapterPosition(view) == state.getItemCount() - 1)
затем вернитесь, иначе вызовите суперклассgetItemOffsets()
.mLayoutManager.getOrientation()
я использовал,DividerItemDecoration.VERTICAL
и это сработало, так как мой RecyclerView является вертикальным.@android:attr/listDivider
в теме приложения не отображает разделитель, если это ресурс цвета, мне пришлось создать форму, которую можно нарисовать моим цветом с фиксированной высотой.Правильный путь состоит в том, чтобы определить
ItemDecoration
дляRecyclerView
следующегоSimpleDividerItemDecoration.java
line_divider.xml:
Наконец, установите это так
редактировать
Как указано @Alan Solitar
амортизируется вместо того, что вы можете использовать
источник
Если вы хотите иметь горизонтальные и вертикальные разделители:
Определите горизонтальные и вертикальные разделители:
horizontal_divider.xml
vertical_divider.xml
Добавьте этот сегмент кода ниже:
источник
DividerItemDecoration
следующим образом:verticalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.VERTICAL);
иhorizontalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.HORIZONTAL);
.Все эти ответы приблизили меня, но в каждом из них отсутствовала ключевая деталь После небольшого исследования я обнаружил, что самым простым маршрутом является сочетание этих трех шагов:
Шаг 1: при настройке RecyclerView
Шаг 2: в файле, таком как res / drawable / divider_gray.xml
Шаг 3: в теме приложения
РЕДАКТИРОВАТЬ: Обновлено, чтобы пропустить последний разделитель:
После небольшого использования я понял, что это рисовать разделитель после последнего элемента, что раздражает. Поэтому я изменил Шаг 1 следующим образом, чтобы переопределить поведение по умолчанию в DividerItemDecoration (конечно, создание отдельного класса - это еще один вариант):
источник
for (int i = 0; i < childCount; i++)
измените наfor (int i = 0; i < childCount - 1; i++)
Просто добавьте View к концу вашего адаптера элемента:
источник
if(position == getItemCount() - 1) { mDividerView.setVisibility(View.INVISIBLE) }
Или должны быть другие способы сделать это.1px
высотой невидима для наших глазВот код для простого пользовательского разделителя (вертикальный разделитель / 1dp высота / черный):
Предположим, у вас есть библиотека поддержки:
код Java
затем пример файла custom_divider.xml:
источник
Создать отдельный файл XML в разрешении / вытяжке папка
Подключите этот XML-файл (your_file) к основному действию , например так:
источник
Котлин Версия:
источник
Я думаю, что вы используете,
Fragments
чтобы иметьRecyclerView
Просто добавьте эти строки после создания ваших
RecyclerView
иLayoutManager
объектовЭто оно!
источник
Попробуйте этот простой однострочный код
источник
Вам нужно добавить следующую строку ...
источник
Способ работы с представлением «Разделитель», а также «Вставки разделителя» заключается в добавлении расширения RecyclerView.
1.
Добавьте новый файл расширения с именем View или RecyclerView:
и добавьте
setDivider
метод расширения в файл RecyclerViewExtension.kt.2.
Создайте файл ресурсов Drawable внутри
drawable
пакета, напримерrecycler_view_divider.xml
:где вы можете указать левый и правый край на
android:insetLeft
иandroid:insetRight
.3.
В вашей Деятельности или Фрагменте, где инициализируется RecyclerView, вы можете установить настраиваемое рисование, вызвав:
4.
Приветствия 🍺
источник
Так что это может быть не правильным способом, но я просто добавил представление к представлению одного элемента RecyclerView (поскольку я не думаю, что есть встроенная функция), например так:
Это означает, что каждый элемент будет иметь линию, которая заполняет его в нижней части. Я сделал это около 1dp с
#111111
фоном. Это также дает своего рода «3D» эффект.источник
Вы можете создать простой многоразовый разделитель.
Создать разделитель:
Создать разделительную линию: divr.xml
Добавьте разделитель в свой Recyclerview:
Чтобы удалить разделитель для последнего элемента:
Чтобы предотвратить рисование разделителя для последнего элемента, вы должны изменить эту строку.
к
Ваша окончательная реализация должна быть такой:
Надеюсь, поможет:)
источник
RecyclerView-FlexibleDivider от yqritc делает это одним вкладышем. Сначала добавьте это к себе
build.gradle
:Теперь вы можете настроить и добавить делитель, в котором вы устанавливаете адаптер вашего recyclerView:
источник
HorizontalDividerItemDecoration
класс?Android просто делает мелочи слишком сложными, к сожалению. Самый простой способ достичь того, что вы хотите, без реализации DividerItemDecoration здесь:
Добавьте цвет фона в RecyclerView к желаемому цвету разделителя:
Добавьте нижнее поле (android: layout_marginBottom) в корневой макет элемента (list_item.xml):
Это должно дать 1dp пространство между элементами и цвет фона RecyclerView (темно-серый будет отображаться как разделитель).
источник
Чтобы сделать ответ Нью-Джерси немного проще, вы можете сделать:
источник
Просто добавьте поле в размере x в нижней части элемента в вашем
RecycleView Adapter
.onCreateViewHolder
источник
Где
0
горизонтальный и1
верныйисточник
Вам просто нужно указать цвет в R.drawable.divider_medium
и добавьте его в свой переработчикПросмотреть
ссылаться на это
источник
Бхуванеш Б.С. Решение работ. Котлин версия этого:
источник
я думаю, что это самый простой способ
Обратите внимание, что: myshape может быть прямоугольным с высотой, которую вы хотите сделать разделителем
источник