文章目录
一 前言
效果:
目标就是:在聊天界面和个人信息这样的界面中,基本上就是一个RecyclerView
了。如果不会自定义分割线,就只能很丑陋了w
本次的参考资料:
RecyclerView之ItemDecoration
(译文)RecyclerView之ItemDecoration由浅入深
深入理解 RecyclerView 系列之一:ItemDecoration
二 自定义ItemDecoration分割线上手
2.1 什么是ItemDecoration
我们之前写的RecyclerView设置分割线的方法如下:
recyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL));
然后粗略一查就知道,想要完成自定义分割线,需要的是自定义ItemDecoration
。然后在MD官网里,我们看到标星号,写日期等也都是靠继承ItemDecoration
之后完成。
ItemDecoration
到底是什么?
直译:条目装饰,顾名思义,ItemDecoration是对Item起到了装饰作用,更准确的说是对item的周边起到了装饰的作用,通过下面的图应该能帮助你理解这话的含义。
上图中已经说到了,
getItemOffsets()就是设置item周边的偏移量(也就是装饰区域的“宽度”)。
而onDraw()才是真正实现装饰的回调方法,通过该方法可以在装饰区域任意画画,
onDrawOver(),可以绘制在内容的上面,覆盖内容
2.2 getItemOffsets()方法
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view,
@NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
}
参数解释:
outRect:
深入理解 RecyclerView 系列之一:ItemDecoration
getItemOffsets 中为 outRect 设置的4个方向的值,将被计算进所有 decoration 的尺寸中,而这个尺寸,被用来计算 RecyclerView