禁用ViewPager2中的动画效果

13
我有一个viewpager2和扩展FragmentStateAdapter的适配器。我希望用户只需点击选项卡就可以转到另一页。我已禁用此viewpager2的用户输入。但是,当我单击选项卡时,会出现快速滑动页面的动画。但我只想显示新碎片。就像使用FragmentTransaction一样,但使用viewpager2和tablayout。是否有人知道如何做到这一点?

奇怪,我的ViewPager2动画速度很慢。我希望它更快一些。除了默认的平滑滚动以外,我没有设置其他任何东西。问题在于它太平滑了,以至于变得很慢。 - chitgoks
3个回答

18

您应该像这样使用addOnTabSelectedListener:

    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) }
        }

    })

你已经使用了

viewPager.isUserInputEnabled = false

注意:setCurrentItem(int item, boolean smoothScroll)

设置当前选定的页面,并进行平滑滚动。如果你将smoothScroll设置为false,则不会看到动画。


14

1

这不起作用,因为“设置空转换器将恢复数据集更改动画。” - lasec0203

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接