ViewPager2 с проблемой вложенной прокрутки FragmentStateAdapter

Я настроил свой макет действия, используя ViewPager2, BottomNavigationView и фрагменты. В моем Первом фрагменте в ViewPager2 содержится ImageSlider.

Когда я прокручиваю ImageSlider, весь фрагмент (в ViewPager2) прокручивается до 2-го фрагмента. Почему это происходит ?.

Затем я перешел на нормальный ViewPager вместо ViewPager2 и FragmentPagerAdapter вместо FragmentStateAdapter, он работает отлично, к сожалению, FragmentPagerAdapter устарел.?

Макет

 <androidx.viewpager2.widget.ViewPager2
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Действия

val adapter = ViewPagerAdapter(this)
viewPager.adapter = adapter
    

ViewPagerAdapter

const val FRAGMENT_COUNT = 4;

class ViewPagerAdapter(activity: FragmentActivity): FragmentStateAdapter(activity){

override fun getItemCount() = FRAGMENT_COUNT

override fun createFragment(position: Int): Fragment {
    return when(position) {
        0 -> HomeFragment()
        1 -> DepartmentFragment()
        2 -> ConnectFragment()
        3 -> SocialFragment()
        else -> HomeFragment()
    }
  }
}

comment
Вы можете попробовать отключить вложенную прокрутку внутреннего RecyclerView ViewPager2 .. Здесь может помочь в этом   -  person Zain    schedule 08.06.2021


Ответы (1)


Перехват сенсорного прослушивателя ViewPager2 невозможен, поскольку мы не можем расширить его, как в ViewPager, из-за того, что этот просмотрщик не позволяет прокручивать какое-либо вложенное представление. Таким образом, вам нужно написать представление оболочки вокруг viewpager2, которое будет обрабатывать этот перехватчик касаний и разрешать другим представлениям получать прокрутку.

Оформить заказ NestedTabSroller из примера Google ViewPager2. Этот класс решит вашу проблему

person Adeel Javed    schedule 18.09.2020