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));
效果图
原来
现在