概要
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)