做课设的时候用到了recycleview,为了美化界面,就想给他的组件之间加一个间隔,就如同下图的效果所示:
后来了解了一下,RecyclerView没有可以直接设置间距的属性,但是后来发现RecyclerView有个内部类ItemDecoration,可以用ItemDecoration来装饰一个item,所以继承重写ItemDecoration就可以实现间距了。下面来介绍这种方法(只适用于LinearLayoutManager)
1、在你所需要的fragment或activity中重写ItemDecoration方法
public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
private int space;
public SpacesItemDecoration(int space) {
this.space = space;
}
@Override
public void getItemOffsets(Rect outRect, View view,
RecyclerView parent, RecyclerView.State state) {
outRect.left = space;//设置上下左右间隔,根据自己的需要添加
outRect.right = space;
outRect.bottom = space;
// Add top margin only for the first item to avoid double space between items
if (parent.getChildPosition(view) == 0) //检查当前item是否是RecyclerView中的第一个item
outRect.top = space; //为了确保第一个item和RecyclerView的顶部之间有一个空间,而不是两个连续的item之间有两个空间(因为每个item的底部都有一个空间)
}
}
2、设置你想要的间隔值(单位:dp)
recyclerView.addItemDecoration(new SpacesItemDecoration(15));
这样就能实现上图所展示的间隔效果啦,这里设置15dp可能还不是特别明显,大家可以把值再设大些,效果会更加明显