Как сделать отступ для делителя в линейном макете RecyclerView (т. Е. Добавить отступы, поля или вставку только в ItemDecoration)
После этого ответа я смог получить разделитель между элементами вертикального RecyclerView. Тем не менее, я также хотел немного отступить от разделительных линий.
Я смог сделать это путем жесткого кодирования в значение INDENT в RecyclerView.ItemDecoration
подкласс.
int INDENT = 20;
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
int left = parent.getPaddingLeft() + INDENT;
int right = parent.getWidth() - parent.getPaddingRight() - INDENT;
// ...
divider.setBounds(left, top, right, bottom);
// ...
}
Однако тогда мне пришлось бы также возиться с независимыми от плотности пикселями.
Наконец-то я нашел решение, похожее на то, как оно было сделано с ListView, поэтому я поделюсь им как ответом ниже.
1 ответ
Решение
использование inset
рисуем /my_divider.xml
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="40dp"
android:insetRight="40dp" >
<shape>
<size android:height="1dp"/>
<solid android:color="@color/recyclerview_divider" />
</shape>
</inset>
Используя конструктор, который принимает идентификатор ресурса, как показано в этом ответе, мы можем предоставить идентификатор нашего XML-файла с пользовательским разделителем.
recyclerView.addItemDecoration(
new DividerItemDecoration(getActivity(), R.drawable.my_divider));