ItemDecoration 클래스는 RecyclerView 내부에 있는 추상 클래스이다.
이름처럼 RecyclerView의 아이템들을 꾸미는 역할을 한다.
그 중에서도 유용한 것은 RecyclerView 내의 아이템이나 그룹들 간의 '구분자(divider)'를 설정할 수 있다.
1. onDraw
public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull State state) {
onDrawOver(c,parent);
}
공식문서의 설명처럼 해당 함수는 recyclerView의 아이템 그려진 전에 호출되므로 아이템보다 아래에 위치하게 된다.
아이템 때문에 가려져 안보일 수도 있다.
2. onDrawover
public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent,
@NonNull State state) {
onDrawOver(c,parent);
}
공식문서의 설명처럼 해당 함수는 recyclerView의 아이템 그려진 후에 호출되므로 아이템보다 위에 위치하게 된다.
아이템 때문에 가려지는 일은 없지만 아이템을 가릴 수 없다.
RecyclerView의 measureChild 성격의 메소드들을 통해 호출되며 커스텀하게 getItemOffset을 구현하지 않는다면 크기가 없는 rect을 반환해 아무런 동작을 하지 않는다.
그래서 아이템간의 구분자를 설정하기 위해서는 해당 메소드를 오버라이딩해 rect을 설정해주면 된다.