我想要的分割器如下图所示:

我希望所有列的宽度相同,但间距不同。现在,我的第一列和最后一列已经被这样剪切了:

这是我的ItemDecoration
public class MoreIndexItemDividerDecoration extends RecyclerView.ItemDecoration {
private GridLayoutManager mGridLayoutManager;
private GridLayoutManager.SpanSizeLookup mSpanSizeLookup;
private int mSpanCount;
public MoreIndexItemDividerDecoration(GridLayoutManager manager, int spanCount) {
mGridLayoutManager = manager;
mSpanSizeLookup = mGridLayoutManager.getSpanSizeLookup();
mSpanCount = spanCount;
}
@Override
public void getItemOffsets(Rect outRect, View child, RecyclerView parent, RecyclerView.State state) {
int pos = parent.getChildLayoutPosition(child);
int left = 0;
int top = 0;
int right = 0;
int bottom = 0;
if (mGridLayoutManager.getItemViewType(child) == 1) {
if (mSpanSizeLookup.getSpanIndex(pos, mSpanCount) == 0) {
left = 50;
} else {
left = 5;
}
if (mSpanSizeLookup.getSpanIndex(pos, mSpanCount) == mSpanCount - 1) {
right = 50;
} else {
right = 5;
}
top = 5;
bottom = 5;
} else {
if (mSpanSizeLookup.getSpanGroupIndex(pos, 4) != 0) {
top = 45;
}
bottom = 45;
}
outRect.set(left, top, right, bottom);
HtscLog.e("child pos: " + pos + " span size: " + mSpanSizeLookup.getSpanSize(pos) + " group index: " + mSpanSizeLookup.getSpanGroupIndex(pos, 4) + " index: " + mSpanSizeLookup.getSpanIndex(pos, 4) + " view type: " + mGridLayoutManager.getItemViewType(child));
}
}我该如何解决这个问题呢?谢谢!
发布于 2017-05-15 17:12:49
实际上,在getItemOffsets的outRect参数中设置的值会占用项目的空间。
我已经实现了一个SCommonItemDecoration,它实际上解决了这个问题。
请访问:ibosong/CommonItemDecoration
较晚的答复,但对其他有相同要求的人可能会有帮助。
https://stackoverflow.com/questions/37581842
复制相似问题