在reyclerview项目中增加边距?

时间:2018-10-07 00:52:34

标签: android android-layout android-recyclerview android-viewholder

我正在尝试为我的应用创建“评论”部分,并正在使用RecyclerView来显示评论。我想为每个RecyclerView项目添加一个左边距,以显示评论所回复的“深度”。我已经使用viewHolder.itemView.setPadding(depth *30, 0, 0, 0);成功地将填充添加到了每个项目视图持有者,但是没有等效的setMargin函数。

这就是我现在拥有的:

enter image description here

例如,红线是我要创建边距的位置。

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

1 个答案:

答案 0 :(得分:2)

您可以将您的项目视图更改为FrameLayout(或类似布局)中的View,以便增加边距实际上可以完成某些事情。但是我的建议是使用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具有该项目的缩进级别。