I have viewpager2 and adapter for him that extends FragmentStateAdapter. I want user to go to another page only by clicking on tablayout. I have disabled user input for this viewpager2. But when I click on tab, there is animation of fast swiping between pages. But I want just new fragment to show. Like with FragmentTransaction, but with viewpager2 and tablayout. Does anyone knows ho to do it?
Disable animation in viewpager2
Asked Answered
weird. my viewpager2 animation is so slow. i want it to go faster. didnt set anything else just the default smooth scrolling. problem is, its too smooth that its slow. –
Kenogenesis
You should use addOnTabSelectedListener like this:
tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabReselected(tab: TabLayout.Tab?) {
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
}
override fun onTabSelected(tab: TabLayout.Tab?) {
tab?.position?.let { viewPager?.setCurrentItem(it, false) }
}
})
You already use
viewPager.isUserInputEnabled = false
Note : setCurrentItem(int item, boolean smoothScroll)
Set the currently selected page with smooth scroll. If you set smooth scroll is false, you don't see the animation
TabLayoutMediator
is what you need. Just set smoothScroll
to false.
public TabLayoutMediator(
@NonNull TabLayout tabLayout,
@NonNull ViewPager2 viewPager,
boolean autoRefresh,
boolean smoothScroll,
@NonNull TabConfigurationStrategy tabConfigurationStrategy)
https://developer.android.com/reference/com/google/android/material/tabs/TabLayoutMediator
I think viewpager2.setPageTransformer(null)
might give you what you need
Note: setting a PageTransformer disables data-set change animations to prevent conflicts between the two animation systems. Setting a null transformer will restore data-set change animations.
this doesn't work, because
Setting a null transformer will restore data-set change animations.
–
Jeep © 2022 - 2024 — McMap. All rights reserved.