FragmentPagerAdapterでスワイプの無効/有効を切り替えたかったので実装をメモ。
ViewPagerでは実装できるけどFragmentPagerAdapterでは難しいみたい。
https://stackoverflow.com/questions/41656902/disable-swipe-in-fragmentpageradapter-android
結果、無効というかタブの切り替えは行われないような処理が書けた。
(スワイプしようとしても弾性をもって勝手に元の位置に戻る系の。これはこれでUIとしてありかなと。)
以下、実装。
private lateinit var listener:ViewPager.SimpleOnPageChangeListener
private lateinit var viewPager:ViewPager
:
//スワイプを無効にする
listener = object : ViewPager.SimpleOnPageChangeListener() {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels)
viewPager.currentItem = 固定したいpageのposition
}
}
viewPager.addOnPageChangeListener(listener)
:
//スワイプを有効にする
viewPager.removeOnPageChangeListener(listener)