【发布时间】:2021-04-30 13:10:48
【问题描述】:
我在我的应用程序中使用 ViewPager2,它有三个页面,每个页面显示不同的内容,问题是即使有人向下滚动并且错误地移动手指,ViewPager 也会更改页面太明智了向右或向左一点。
那么我怎样才能让 ViewPager 不那么敏感呢? ViewPager2是在Activity中创建的
这是我初始化 ViewPager 的代码:
private lateinit var viewPager: ViewPager2
private lateinit var adapterView: ViewPagerAdapter
private fun initViewPager() {
adapterView.addFragment(ElencoFragment())
adapterView.addFragment(TestataFragment())
adapterView.addFragment(CorpoFragment())
adapterView.notifyDataSetChanged()
viewPager.adapter = adapterView
...
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewPager = findViewById(R.id.pager)
adapterView = ViewPagerAdapter(supportFragmentManager, lifecycle)
...
}
我的适配器:
class ViewPagerAdapter
(manager: FragmentManager, lifecycle: Lifecycle) :
FragmentStateAdapter(manager, lifecycle) {
private var fragmentList: ArrayList<Fragment> = ArrayList()
override fun getItemCount(): Int {
return fragmentList.size
}
override fun createFragment(position: Int): Fragment {
return fragmentList[position]
}
fun addFragment(fragment: Fragment) {
fragmentList.add(fragment)
}
}
【问题讨论】:
-
ViewPagerAdapter.addFragment()是一种反模式,不可避免地会导致崩溃。请按预期使用createFragment()方法 -
可能的解决方法:使用
TabLayout并禁止通过滑动在页面之间导航,并且只允许使用选项卡。如果您想为滑动操作添加“阻力”,我不太确定用户体验。
标签: android kotlin android-viewpager2