使用场景:recyclerview要通过代码设置item间的场景
解决方案:
1.重写RecyclerView.ItemDecoration方法,代码如下:
public class SpaceItemDecoration extends RecyclerView.ItemDecoration{ private int leftRight; private int topBottom;
//leftRight为横向间的距离 topBottom为纵向间距离
public SpaceItemDecoration(int leftRight, int topBottom) { this.leftRight = leftRight; this.topBottom = topBottom; } @Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { super.onDraw(c, parent, state); } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { LinearLayoutManager layoutManager = (LinearLayoutManager) parent.getLayoutManager(); //竖直方向的 if (layoutManager.getOrientation() == LinearLayoutManager.VERTICAL) { //最后一项需要 bottom if (parent.getChildAdapterPosition(view) == layoutManager.getItemCount() - 1) { outRect.bottom = topBottom; } outRect.top = topBottom; outRect.left = leftRight; outRect.right = leftRight; } else { //最后一项需要right if (parent.getChildAdapterPosition(view) == layoutManager.getItemCount() - 1) { outRect.right = leftRight; } outRect.top = topBottom; outRect.left = leftRight; outRect.bottom = topBottom; } } }
2.使用方法:
第一个参数横向间距,第二个参数纵向间距,根据需求具体来看
recyclerview.addItemDecoration(new SpaceItemDecoration(0, 30));