1
2

More than 3 years have passed since last update.

ViewPager2で端までスクロールしたときのエフェクト(overScrollMode)を消す

Last updated at Posted at 2020-07-22

横スワイプで画面を切り替えて新機能を呼び出せるようにViewPager2を導入しようと思いますが、まずは過渡期実装として1ページだけ含むViewPager2を設置しました。そうなると端までスクロールしてもう先がないことを表す光が漏れ出すようなエフェクトをいったん無効化したいです。

device-2020-07-23-034158.gif

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を設定します。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2