Добавляете поля для элементов reyclerview? - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь создать раздел комментариев для моего приложения и использую RecyclerView для отображения комментариев.Я хотел бы добавить левое поле для каждого элемента RecyclerView, чтобы показать «глубину», на которую отвечает комментарий.Я успешно добавил padding к каждому элементу просмотра элемента, используя viewHolder.itemView.setPadding(depth *30, 0, 0, 0);, но не существует эквивалентной функции setMargin.

Это то, что у меня сейчас:

enter image description here

Красная линия - это то место, где я хочу создать поле, например.

Мне также нужно будет динамически рассчитывать маржу.

1 Ответ

0 голосов
/ 07 октября 2018

Вы можете изменить свои представления элементов, чтобы они были представлениями внутри FrameLayout (или аналогичными), так что добавление полей фактически чего-то достигает.Но я рекомендую использовать RecyclerView.ItemDecoration для применения смещений к каждому представлению.

@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
    Context context = view.getContext();
    int indentation = context.getResources().getDimensionPixelSize(R.dimen.indentation);
    RecyclerView.ViewHolder holder = parent.getChildViewHolder(view);
    outRect.left = indentation * holder.getIndentationLevel();
}

Это предполагает, что у вас есть ресурс dimen для одного уровня отступа,и что ваш ViewHolder имеет уровень отступа элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...