Reputation: 678
I've setup my activity layout using ViewPager2
, BottomNavigationView
and Fragments. In my First fragment in ViewPager2
contains a ImageSlider
.
When I scroll the ImageSlider the entire fragment (in ViewPager2
) scrolls to 2nd Fragment. Why is this happening ?.
Then I changed to Normal ViewPager
instead of ViewPager2
and FragmentPagerAdapter
instead of FragmentStateAdapter
, the it works perfectly, unfortunately FragmentPagerAdapter
is deprecated.?
Layout
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Activity
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()
}
}
}
Upvotes: 1
Views: 1435
Reputation: 372
Intercepting ViewPager2 touch listener is not possible as we cannot extend it like we do in the ViewPager, due to this viewpager don't allow any nested view to scroll. So you need to write a wrapper view around the viewpager2 which will handle this touch interceptor and allow other views to receive scrolling.
Checkout NestedTabSroller class from the Google ViewPager2 sample. This class will solve your problem
Upvotes: 2