Android NestedScrollView 是一種特殊的滾動視圖,它可以嵌套在其他滾動視圖(如 ScrollView 或 RecyclerView)內部。NestedScrollView 主要用于解決嵌套滾動的問題,提高滾動性能,并允許內部滾動視圖與外部滾動視圖協同工作。
NestedScrollView 的運用場景如下:
當你的布局中有多個滾動視圖時,使用 NestedScrollView 作為外部滾動視圖,它可以與內部滾動視圖協同工作,避免滑動沖突。
當你的布局中有長列表(如 RecyclerView 或 ListView)和一個或多個其他滾動視圖(如 ScrollView)時,使用 NestedScrollView 可以提高滾動性能,因為它可以減少不必要的滑動事件傳遞。
當你的布局中有嵌套的固定頭部或底部導航欄時,使用 NestedScrollView 可以使這些頭部或底部導航欄在滾動時保持固定位置。
下面是一個簡單的 NestedScrollView 示例:
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Header"
android:textSize="20sp"
android:gravity="center" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Footer"
android:textSize="20sp"
android:gravity="center" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
在這個示例中,我們使用 NestedScrollView 作為外部滾動視圖,包含一個固定頭部(TextView)、一個 RecyclerView(內部滾動視圖)和一個固定底部(TextView)。這樣,當用戶滾動 RecyclerView 時,Header 和 Footer 會保持固定位置。