Android中RecyclerView设置每个控件的间距

在RecyclerVie中存在一个方法,是用以设置每个item之间的间距的:addItemDecoration(); 传的是一个ItemDecoration对象, 而一般我们使用的话可以直接继承ItemDecoration复写相关方法就可以了代码如下:

public class MyItemDecoration extends RecyclerView.ItemDecoration {
    private int mFirstSpace; //第一个的
    private int mOtherSpace; //其他

    public MyItemDecoration(int firstSpace, int otherSpace){
        this.mFirstSpace = firstSpace;
        this.mOtherSpace = otherSpace;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);
        if(parent.getChildLayoutPosition(view) == 0){
            //当是第一个Item的时候 距离上面多少距离,相当于在Item的根布局加上margin参数
            outRect.top = mFirstSpace;
        }else{
            //其他的(非第一个Item的效果)
            outRect.top = mOtherSpace;
        }
    }
}

使用如下:

mRecyclerView.addItemDecoration(new MyItemDecoration(
                MeasureUtils.dip2px(this, 39),
                MeasureUtils.dip2px(this, 10)));
其中MeasureUtils是我自己的换算方法,把px转换成dp

效果图如下:
这里写图片描述
可以非常明显的看到,第一个Item距顶部的距离与之后其他是不一样的

猜你喜欢

转载自blog.csdn.net/qq_37108755/article/details/80585945