안드로이드

안드로이드 RecyclerView.Decoration , recyclerView item 간격 설정

알통몬_ 2018. 12. 14. 09:59
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


안드로이드에서 RecyclerView는 많이 사용되는 컨테이너인데요.

저는 평소에 이 recyclerView에 들어가는 아이템들의 

간격이 있어야 할 때는그냥 item.xml 에서 

paddingEnd를 주곤 했었는데요.


당연(?)하게도 RecyclerView.ItemDecoration 이라는 

클래스를 제공한다는 걸 알게 되었습니다.


사용법은 RecyclerView.Adapter 보다 더 쉽습니다.

1. Decoration 클래스 생성.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import android.graphics.Rect;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
 
public class NutritionEduVideoDecoration extends RecyclerView.ItemDecoration {
 
    private final int divWidth;
 
    public NutritionEduVideoDecoration(int divWidth) {
        this.divWidth = divWidth;
    }
 
    @Override
    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
        outRect.right = divWidth;
    }
}
 
cs

그리고 getItemOffsets 라는 메소드를 오버라이딩합니다.

저는 아이템들의 좌우 간격이 필요해서 outRect.right = ...;

을 사용했습니다.

상하일 경우 top or bottom을 좌우는 left or right 를 사용하면 됩니다.


2. 사용하기

binding.eduVideoListView.addItemDecoration(new NutritionEduVideoDecoration(48));

사용은 더욱 간단합니다. setAdapter처럼 사용하면 끝!

간단하죠?

이상입니다.



반응형