public class GridItemDecoration extends RecyclerView.ItemDecoration {
protected int mSpace = 10;
private boolean mIncludeEdge = true;
public GridItemDecoration(int space) {
this.mSpace = space;
}
public GridItemDecoration(int space, boolean includeEdge) {
this.mSpace = space;
this.mIncludeEdge = includeEdge;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
GridLayoutManager gridLayoutManager = (GridLayoutManager) parent.getLayoutManager();
//列数
int spanCount = gridLayoutManager.getSpanCount();
int position = parent.getChildLayoutPosition(view);
int column = (position) % spanCount;
if (mIncludeEdge) {
outRect.left = mSpace - column * mSpace / spanCount;
outRect.right = (column + 1) * mSpace / spanCount;
if (position < spanCount) {
outRect.top = mSpace;
}
outRect.bottom = mSpace;
} else {
outRect.left = column * mSpace / spanCount;
outRect.right = mSpace - (column + 1) * mSpace / spanCount;
if (position >= spanCount) {
outRect.top = mSpace;
}
}
}
}
记录一下
本文介绍了一个自定义的GridItemDecoration类,用于在Android应用中为RecyclerView的网格布局提供统一的项目间距。通过GridItemDecoration,开发者可以轻松地设置项目之间的间距,包括是否包含边距。

1824

被折叠的 条评论
为什么被折叠?



