728x90
안녕하세요!
오늘은 ItemDecoration을 이용해 RecyclerView의 여백 설정하는 방법을 알아보겠습니다.
itemDecoration 이란, RecyclerView를 이용하면서 유용하게 사용할 수 있는 구성요소입니다. itemDecoration를 잘 이용한다면 리스트의 항목들을 다양하게 꾸밀 수 있습니다.
itemDecoration에 대한 공식문서 입니다.
https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.ItemDecoration
itemDecoration에서는 3가지 함수를 제공하는데 필요할때 각 함수를 재정의하여 사용할 수 있습니다.
- onDraw: 항목을 배치하기 전에 호출
- onDrawOver: 모든 항목이 배치된 후에 호출됩니다.
- getItemOffsets: 각 항목을 배치할 때 호출.
이중에서 getItemOffsets 사용법을 알아보겠습니다. 아래 코드를 이용해 리사이클러뷰의 리스트들에 여백을 줄 수 있습니다.
public class MyItemDecoration extends RecyclerView.ItemDecoration {
private Context context;
MyItemDecoration(Context context) {
this.context = context;
}
//각 항목을 배치할 때 호출된다
//Rect - 항목을 구성하기 위한 사각형 정보가 호출
//view - 항목을 구성하기 위한 view 호출
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view,
@NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
//항목의 index값 획득
int index = parent.getChildAdapterPosition(view)+1;
//인덱스가 3으로 나누어 떨어지는 경우, 즉 항목3개 마다 세로방향 여백을 60을 준다
outRect.set(20, 20, 20, 20 );
//배경색을 지정함
view.setBackgroundColor(context.getResources().getColor(R.color.gray_light));
//전달되는 데이터 타입별로 떠있는 효과를 다르게 줌
ViewCompat.setElevation(view, 20.0f); //떠있는 효과를 준다
}
}
ItemDecoration을 recyclerVIew에 적용하는 방법은 아래와 같습니다.
//리사이클러뷰에 ItemDecoration 적용
rv_menu.addItemDecoration(new MyItemDecoration(ItemActivity.this));
참고
- 깡샘의 안드로이드 프로그래밍 (저자-강성윤)
'안드로이드 자바' 카테고리의 다른 글
[Android/안드로이드] 키보드 화면조정 (0) | 2022.12.04 |
---|---|
[Java][Android] AutoFitTextView 사용하기 (0) | 2022.11.27 |
[Java][Android] 화면 회전(가로, 세로 모드) 막기 (0) | 2022.11.25 |
[Java][Android] ImagePicker라이브러리를 사용하여 이미지 자르기, 회전, 확대/축소 구현 (0) | 2022.11.23 |
[Java][Android] SimpleRatingBar 사용하기 (0) | 2022.11.12 |