效果图
原理
实际上就是绘制一个头部item在RecycleView
上显示即可,该Item没有随着滑动变动所以看起来就像一个固定的头部。
实现ItemDecoration,重写其onDraw
、onDrawOver和
getItemOffsets。
//将decoration绘制到canvas上,会优先于itemView进行绘制,所以超出绘制区域会被itemView覆盖,不会有影响(可以理解为绘制背景)
public void onDraw(Canvas c, RecyclerView parent, State state);
//作用同onDraw,但是晚于itemView的绘制,所以会覆盖在recycleView之上,是完整可见的(不超出 RecycleView 的情况下)
public void onDrawOver(Canvas c, RecyclerView parent, State state);
//将这个方法中获取的outRect插到padding或者margin中,扩大了itemView之间的间距,用于onDraw中绘制decoration
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, State state);
具体
class StickItemDecoration(var groupInt