RecyclerView优雅设置边距

设置边距的方法有很多,但是灵活性最高,性能最高,代码模块性最高的代码非ItemDecoration莫属。


为什么最优雅,因为这是RecyclerView原生的啊。


class ChatDetailItemDecoration extends RecyclerView.ItemDecoration {
    private int space;

    public ChatDetailItemDecoration(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;

        if (parent.getChildPosition(view) == 0)
            outRect.top = space;
    }
}

只需要实现RecyclerView.ItemDecoration的子类即可。

为什么说灵活性最高?因为他可以给每个item都设置不同的边距,随心所欲。拿最后的if代码举例子,就是给第一个item的上边距设置了一段空白距离。


使用很简单

mRvChatDetail.addItemDecoration(new ChatDetailItemDecoration(20));

效果图

原来

RecyclerView优雅设置边距


现在

RecyclerView优雅设置边距