본문 바로가기
Developer/Android, Java

[안드로이드] ScrollView 안에 RecyclerView 을 넣을 수 있나요?

by Doony 2019. 5. 22.

보통 레이아웃을 구성할 때 ScrollView 안에 RecyclerView를 넣고 싶을 때가 있습니다. 어떤 상황에서일까요?
흔한 예로, 게시글을 생각해보시면 됩니다. 하나의 게시글 밑으로 많은 댓글이 달리겠죠?
아래 2가지 경우에 대해 생각해보겠습니다.

  • RecyclerView 만 사용했을 때
  • ScrollView 안에 모든 뷰(RecylcerView 포함)를 넣었을 때

먼저 첫번째 경우는, 댓글 부분만 스크롤이 됩니다. 즉, 게시글은 뷰의 특정 비율만큼 차지하고 있고, 스크롤을 내리면 댓글 부분만 위아래로 왔다갔다하는 셈입니다.
두번째의 경우, 게시글과 댓글이 한몸처럼 움직이기 때문에, 스크롤을 내리면 게시글은 안보이고 댓글로만 가득찬 화면이 나타나겠죠.

두번째 방식으로 사용하는 경우가 굉장히 많은데요. 단 아래와 같은 방식으로 사용을 하셔야 깔끔하게 동작합니다.

  • ScrollView
    • RelativeLayout
      • RecyclerView

보다시피, 스크롤뷰 안에 바로 recyclerView를 넣지 않고, RelativeLayout안에 넣는 것입니다. 정확한 원리는 잘 모르겠으나, 이렇게 하지 않으면 스크롤뷰의 스크롤이 완전하게 동작하지 않을 수 있습니다.
(약간 스크롤이 불충분하게 생겨서, 더 아래 댓글들이 있음에도 불구하고 보이지 않는 현상이 발생합니다.)

또한, RecyclerView를 정의한 액티비티에서 다음과 같이 설정해줘야 중복 스크롤에 따른 오류를 피할 수 있습니다.
mRecyclerView.setNestedScrollingEnabled(false);

댓글