Tooroop..
35
我设法让它运作起来.所以在我的情况下,我不需要在屏幕的左右边缘有任何边框.我只需要中间和底部的边框.解决方案是获取StaggeredGridLayoutManager.LayoutParams类型的视图的布局参数.在这些参数中,您可以获取spanIndex,它告诉您视图的索引.因此,如果spanCount为2,则左视图的spanIndex为0,右视图的spanIndex为1.
这是我的代码所以它可能对你有所帮助
public class SpaceItemDecoration extends RecyclerView.ItemDecoration {
private int space;
public SpaceItemDecoration(int space) {
this.space = space;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
int position = parent.getChildAdapterPosition(view);
StaggeredGridLayoutManager.LayoutParams lp = (StaggeredGridLayoutManager.LayoutParams)view .getLayoutParams();
int spanIndex = lp.getSpanIndex();
if(position > 0){
if(spanIndex == 1){
outRect.left = space;
} else{
outRect.right = space;
}
outRect.bottom = space * 2;
}
}
}
在我的情况下,首先我必须得到位置,因为在索引0我有一个没有任何边框的标题视图.之后我得到了span索引,并根据它设置了我在该视图上需要的边框.最后,我在每个视图上设置了底部边框.