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>
중첩 스크롤을 비활성화시켜주면 자연스럽게 스크롤이 된다.
'Programming 개발은 구글로 > JAVA[Android]' 카테고리의 다른 글
[안드로이드] 4대 컴포넌트 : 액티비티, 서비스, 콘텐츠 프로바이더, 브로드캐스트 리시버 (0) | 2022.04.13 |
---|---|
[안드로이드][에러 처리] IllegalStateException: Can not perform this action after onSaveInstanceState (0) | 2022.04.13 |
[안드로이드][활용] Instagram oEmbed API (2) | 2022.04.12 |
[안드로이드] ButterKnife Library에 대하여 (0) | 2022.04.11 |
[안드로이드] 화면 해상도 dp에 대하여 (0) | 2022.04.06 |
댓글