쪼렙 as! 풀스택

Android - RecyclerView 에, 아이템 마진, First Item 에도 적용하기 (Horizontal Margin) 본문

개발 일지/iOS & Android

Android - RecyclerView 에, 아이템 마진, First Item 에도 적용하기 (Horizontal Margin)

코코앱 2019. 7. 2. 15:26

RecyclerView 를 이용해서, 아이템간 마진을 이용하려면, ItemDecoration 을 이용해야 한다.

 

보통은 DividerItemDecoration 을 이용하는데,

내 경우에는, Horizontal 방향을 사용해야 했고, 그래서 양쪽 끝에도 동일한 마진이 들어가길 원했다. 

보통의 DividerItemDecoration 을 이용하면, 첫번째 아이템 전에는 마진이 들어가지 않기 때문에,

직접 ItemDecoration 을 서브클래싱 해서 사용해야 했다.

 

 

SpaceDecoration.kt

class SpaceDecoration(private val size: Int) : RecyclerView.ItemDecoration() {
    override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State?) {
        super.getItemOffsets(outRect, view, parent, state)
        outRect.right += size
        if (parent.getChildAdapterPosition(view) == 0) {
            outRect.left += size
        }
    }
}

 

사용은,

val size = resources.getDimensionPixelSize(R.dimen.MY_SIZE)
val deco = SpaceDecoration(size)
recyclerView.addItemDecoration(deco)
Comments