ViewPager2へのMigrationでNested scrollが効かない
ViewPager2にMigrateした際、NestedScrollが効かなくなっていたためその対応。
MigrationについてのDocumentは以下。
Migrate from ViewPager to ViewPager2 | Android Developers
よく見てみると Support nested scrollable elements という章があり、本来VIewPager2では同方向のNested scrollはサポートされていないことがわかる。
https://developer.android.com/training/animation/vp2-migration?hl=en#nested-scrollables
今回はDocumentにLinkされていた NestedScrollableHost を使うことで解決した。
こちらのNestedScrollableHostをプロジェクト内に定義し、Nested scrollしたいViewPagerをwrapすることで可能となる。
layout fileは以下。Indicatorも一緒にwrapすることできちんと動くことが確認できた。 自分のプロジェクト内で試した場合は親のview groupの違いによって動く動かないがあったので試したほうがよいと思う。
<com.your.project.NestedScrollableHost
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_marginBottom="16dp" />
<com.viewpagerindicator.CirclePageIndicator
android:id="@+id/page_I"
style="@style/BaseCircleIndicator.White"
android:layout_width="match_parent"
android:layout_gravity="bottom|center_horizontal"
android:paddingTop="8dp" />
</com.quipper.school.assignment.ui.NestedScrollableHost>