ItemDecoration
-
RecyclerView.ItemDecoration 允许应用给具体的 View 添加具体的图画或者 layout的偏移,对于绘制 View 直接的分割线,视觉分组边界等等非常有用。
-
当我们调用 addItemDecoration() 方法添加 decoration 的时候, RecyclerView 就会调用 该类的 onDraw 方法去绘制分割线,也就是说,分割线是绘制出来的。
-
RecyclerView.ItemDecoration 是一个 抽象类, 官方目前只提供了一个
DividerItemDecoration实现类。
ItemDecoration 方法
public abstract static class ItemDecoration {
// onDraw 的绘制是在 itemView 绘制之前
public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull State state) {
onDraw(c, parent);
}
// onDrawOver 的绘制是在 itemView 绘制之后
public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent,
@NonNull State state) {
onDrawOver(c, parent);
}
// 设置指定itemview的 paddingLeft,paddingTop, paddingRight, paddingBottom
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view,
@NonNull RecyclerView parent, @NonNull State state) {
getItemOffsets(outRect, ((LayoutParams) view.getLayoutParams()).getViewLayoutPosition(),
parent);
}
}