横スワイプで画面を切り替えて新機能を呼び出せるようにViewPager2を導入しようと思いますが、まずは過渡期実装として1ページだけ含むViewPager2を設置しました。そうなると端までスクロールしてもう先がないことを表す光が漏れ出すようなエフェクトをいったん無効化したいです。
ViewPagerでは android:overScrollMode="never"
を設定するだけでエフェクトを消せます。
activity_pager.xml
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:overScrollMode="never"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
ViewPager2では同じやり方ではエフェクトを消せませんでした。
activity_pager.xml
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
検索してみたところ、Stackoverflowに答えがありました。
https://stackoverflow.com/questions/56878906/remove-viewpager2-overscroll-animatoin
PagerActivity.kt
val childView = viewPager.getChildAt(0)
if (childView is RecyclerView) {
childView.setOverScrollMode(View.OVER_SCROLL_NEVER)
}
ViewPager2はRecyclerViewを子供として持っていて、それに対してoverScrollModeを設定します。