프로젝트 개발 중 RecyclerView로 리스트를 구성 후
각 Item의 간격을 조정해 줄 일이 있어 ItemDecoration을 사용하여 구현하였다.
RecyclerView의 ItemDecoration Class를 생성
outRect의 left속성에 값을 지정해 주었다.
class HorizontalSpaceDecoration(private val leftSpace: Int) : RecyclerView.ItemDecoration() {
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
outRect.left = leftSpace
}
}
RecyclerView에 ItemDecoration 지정
spaceDecoration = HorizontalSpaceDecoration(ResourceUtil.getDimension(R.dimen.common_m4dp).roundToInt())
cookieRecycler.addItemDecoration(spaceDecoration)
마이너스 마진 값으로 Decoration을 생성 후 RecyclerView에 지정해 주면 아래처럼 좌측으로 마이너스 마진을 먹어 간격이 줄어진다.
하지만 내가 의도한 바는 첫번째 Item을 제외한 나머지 Item에만 적용하는 것이어서 Decoration에 추가작업을 하였다.
class HorizontalSpaceDecoration(private val leftSpace: Int) : RecyclerView.ItemDecoration() {
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
val position = parent.getChildAdapterPosition(view) //각 아이템뷰의 순서 (index)
//val totalItemCount = state.itemCount //총 아이템 수
//val scrollPosition = state.targetScrollPosition //스크롤 됬을때 아이템 position
//첫번째 아이템이 아닐때 left -margin
if (position != 0)
outRect.left = leftSpace
//outRect.set(0,0,0,0) //left, top, bottom, right 한번에 주는 속성
}
}
이렇게 구현하면 일정 간격으로 Item들을 겹치게 그릴 수 있다.
Object Direct Set
cookieRecycler.addItemDecoration(object : RecyclerView.ItemDecoration(){
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
val position = parent.getChildAdapterPosition(view) //각 아이템뷰의 순서 (index)
val totalItemCount = state.itemCount //총 아이템 수
val scrollPosition = state.targetScrollPosition //스크롤 됬을때 아이템 position
//outRect.set(0,0,0,0)
//첫번째 아이템이 아닐때 left -margin
if (position != 0)
outRect.left = ResourceUtil.getDimension(R.dimen.common_m4dp).roundToInt()
}
})
'Android > Reference' 카테고리의 다른 글
BottomSheet (Persistent, Modal) (0) | 2022.05.02 |
---|---|
RecyclerView Item에 Animation 주기 (0) | 2022.04.18 |
LayoutParam Programmatically (0) | 2022.04.06 |
OutLineTextView 글자 외곽선 (0) | 2022.04.03 |
Context (0) | 2022.03.28 |