Я использую 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()
по назначению - person EpicPandaForce   schedule 30.04.2021TabLayout
и запретите прокрутку для перехода между страницами и разрешите это только с помощью вкладок. Я не слишком уверен в пользовательском опыте, если вы хотите добавить сопротивление смахиванию. - person JensV   schedule 04.05.2021