Search code examples
androidkotlinandroid-tablayoutandroid-viewpager2

Disable animation in viewpager2


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?


Solution

  • 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