티스토리 뷰

안녕하세요. 오늘은 RecyclerView의 LayoutManager의 소개와 종류에 대해 알아보는 시간을 갖겠습니다.

LayoutManager란?

Android의 Developer에 의하면 "RecyclerView의 아이템의 배치와 재사용에 대한 정책을 결정하면 LayoutManager의 종류에 따라 아이템의 배치가 변경됩니다."
참조 : 안드로이드 Developer - RecyclerView LayoutManager

LayoutManager의 종류

LayoutManager의 종류는 총 3가지로

  • LinearLayoutManager : 수평, 수직의 스크롤 리스트
  • GridLayoutManager : 행에 표시되는 아이템 갯수가 여러개인 리스트
  • StaggeredGridLayoutManage : 높이가 불구칙적인 형태의 그리드 리스트
    로 이루어져 있습니다.

LinearLayoutManager

기존의 ListView를 구현할 수 있도록 만드는 LayoutManager입니다.
setOrientation을 이용하여 스크롤의 방향을 설정할 수 있으며
scroll의 위치나 추가, 삭제에 대한 애니메이션 처리를 지원합니다.

GridLayoutManager

RecyclerView의 열에 2개 이상의 아이템을 넣고 싶을 때 사용하는 LayoutManager입니다.

val count = 3 // 열에 표시할 아이템의 갯수를 넣어주세요
recyclerView.setLayoutManager(GridLayoutManager(activity, count))

//또한 span을 이용하여 열에 표시할 아이템의 갯수를 유동적으로 변경 할 수 있습니다.
gridLayoutManager.spanSizeLookup = object: 
GridLayoutManager.SpanSizeLookup(){
    override fun getSpanSize(position: Int): Int{
        //여기서 position의 인자를 통해 아이템의 갯수를 반환하면 됩니다,
    }
}

span 2를 반환하면 총 3개의 구역에서 2개를 합쳐 이용한다는 뜻이며
span 1은 총 3개의 구역에서 1개만을 사용한다는 뜻입니다.
gridLayoutManager에 3을 넣어 layoutManager를 생성하였을 때
span3은 모든 열을 다 사용하는 한개의 아이템만 보인다는 뜻입니다.

StaggeredGridLayoutManage

GridLayoutManager에서 아이템의 높이를 가변적으로 설정할 수 있도록 만듭니다.

StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL)
// span의 갯수와 orientation을 넣어 생성합니다.
// 이 후 각 아이템의 높이(VERTICAL 이기에)을 가변적으로 설정 할 수 있습니다.

간단하죠? layoutManager에 있는 함수나 변수에 대한 정보는 아래 사이트에서 참조하세요.
Android Developer - LayoutManager
이에 대한 질문은 아래 댓글에 남겨주세요.
감사합니다.

댓글
댓글쓰기 폼