为 recyclerview 项目添加边距?
Adding margins to reyclerview items?
我正在尝试为我的应用程序创建评论部分,并使用 RecyclerView 来显示评论。我想为每个 RecyclerView 项目添加一个左边距,以显示评论正在回复的 "depth"。我已经使用 viewHolder.itemView.setPadding(depth *30, 0, 0, 0);
成功地将 padding 添加到每个项目查看器,但是没有等效的 setMargin
函数。
这是我现在拥有的:
例如,红线是我要创建边距的地方。
我还需要动态计算保证金。
您可以将项目视图更改为 FrameLayout(或类似布局)中的视图,这样添加边距实际上可以完成一些事情。但我的建议是使用 RecyclerView.ItemDecoration
将 offsets 应用于每个视图。
@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 具有项目的缩进级别。
我正在尝试为我的应用程序创建评论部分,并使用 RecyclerView 来显示评论。我想为每个 RecyclerView 项目添加一个左边距,以显示评论正在回复的 "depth"。我已经使用 viewHolder.itemView.setPadding(depth *30, 0, 0, 0);
成功地将 padding 添加到每个项目查看器,但是没有等效的 setMargin
函数。
这是我现在拥有的:
例如,红线是我要创建边距的地方。
我还需要动态计算保证金。
您可以将项目视图更改为 FrameLayout(或类似布局)中的视图,这样添加边距实际上可以完成一些事情。但我的建议是使用 RecyclerView.ItemDecoration
将 offsets 应用于每个视图。
@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 具有项目的缩进级别。