为 recyclerview 项目添加边距?

Adding margins to reyclerview items?

我正在尝试为我的应用程序创建评论部分,并使用 RecyclerView 来显示评论。我想为每个 RecyclerView 项目添加一个左边距,以显示评论正在回复的 "depth"。我已经使用 viewHolder.itemView.setPadding(depth *30, 0, 0, 0); 成功地将 padding 添加到每个项目查看器,但是没有等效的 setMargin 函数。

这是我现在拥有的:

例如,红线是我要创建边距的地方。

我还需要动态计算保证金。

您可以将项目视图更改为 FrameLayout(或类似布局)中的视图,这样添加边距实际上可以完成一些事情。但我的建议是使用 RecyclerView.ItemDecorationoffsets 应用于每个视图。

@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 具有项目的缩进级别。