본문 바로가기
Programming 개발은 구글로/JAVA[Android]

[안드로이드] NestedScrollView

by 40대직장인 2022. 4. 11.

NestedScrollView

NestedScrollView는 그냥 ScrollView이다.
안드로이드 공식 문서에서도 "NestedScrollView is just like ScrollView"라고 작성되어 있다.
심지어 사용하는 방법도 ScrollView와 다를 것이 별로 없다.

 

왜 ScrollView 말고 NestedScrollView를 사용하는가?

하나의 스크롤에 여러 형태의 리스트가 필요하다면 NestedScrollView 하위에 RecyclerView 들을 배치합니다.

하지만, 그냥 사용하게 되면 스크롤이 부자연스러운 현상이 발생됩니다.

 

<androidx.core.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        ....
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rv_sample"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"/>

    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
 
RecyclerView에서 스크롤을 시작해서 스크롤뷰 영역에서 스크롤 중인 화면을 터치하면 스크롤이 멈추지 않고
계속 움직이게 된다.

자연스럽게 스크롤을 하려면 하위 뷰에 nestedScrollingEnabled를 사용한다.

 

<androidx.core.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rv_sample"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:nestedScrollingEnabled="false"
            app:layout_constraintTop_toTopOf="parent"/>

    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.core.widget.NestedScrollView>
 
중첩 스크롤을 비활성화시켜주면 자연스럽게 스크롤이 된다.

 

 

 

댓글