问题描述
我需要带有 4 列的 GridLayoutManager 的 recyclerView。我需要在 2 和 3 列之间设置 40dp 的空间,在其他列之间设置 4 dp 的空间。为此,我创建了自定义 ItemDecoration。这是我的代码:
@Override
public void getItemOffsets(Rect outRect,View view,RecyclerView parent,RecyclerView.State state) {
int position = parent.getChildAdapterPosition(view);
int column = position % SPAN_COUNT;
int tempSpace = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,40f,parent.getContext().getResources().getDisplayMetrics());
if (column == 0) {
outRect.set(0,space,space / 2,0);
} else if (column == 1) {
outRect.set(space / 2,tempSpace / 2,0);
} else if (column == 2) {
outRect.set(tempSpace / 2,0);
} else {
outRect.set(space / 2,0);
}
}
我的 recyclerView 宽度是 match_parent。
但结果,第一列和第二列之间的距离看起来太大了,而不是 4dp。请告诉我我的代码有什么问题。我的目标是在第二列和第三列之间设置较大的距离,并在其他列之间设置较小的距离。但是,我的项目装饰器没有按我预期的那样工作。是否可以在列之间设置不同的间距? 请帮帮我,我已经很久没能解决这个问题了。
注意:当我为我的列设置相同的边距时,一切正常,但是当我尝试根据列号设置不同的边距时,一切都会中断并且不像我预期的那样工作(
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)