Posted at

ViewPagerのスワイプを無効にする方法

More than 1 year has passed since last update.

=====


概要

ViewPagerを使って画面を切り替える時、スワイプではなく別途用意したナビゲーションで操作させたい場合があります。そういった場合の実装をメモします。


実装


CustomViewPager.kt

class CustomViewPager(context: Context, attrs: AttributeSet?) : ViewPager(context, attrs) {

private var isEnable = true

override fun onTouchEvent(ev: MotionEvent?): Boolean = when (isEnable) {
true -> super.onTouchEvent(ev)
else -> false
}

override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean = when (isEnable) {
true -> super.onInterceptTouchEvent(ev)
else -> false
}

fun setPagingEnabled(isEnable: Boolean) {
this.isEnable = isEnable
}
}


実際に使用する時はこんな感じで指定します。

viewPager.setPagingEnabled(false)


参考