使用RecyclerView设置间距,需要重写RecyclerView.ItemDecoration这个类。有如下的效果图需要实现,间距只有中间的格子和底部的格式之间有。
Paste_Image.png
实现方法很简单,因为这个效果是每一行有3个格子,只要每行的第一个格式左边间距为0即可以。其他都设置左边距和底部距离。
代码如下:
1public class SpaceItemDecoration extends RecyclerView.ItemDecoration { 2 3 private int space; 4 5 public SpaceItemDecoration(int space) { 6 this.space = space; 7 } 8 9 @Override 10 public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { 11 //不是第一个的格子都设一个左边和底部的间距 12 outRect.left = space; 13 outRect.bottom = space; 14 //由于每行都只有3个,所以第一个都是3的倍数,把左边距设为0 15 if (parent.getChildLayoutPosition(view) %3==0) { 16 outRect.left = 0; 17 } 18 } 19 20}