提问者:小点点

禁用视图页2中的动画


我为他扩展了FragmentStateAdapter。我希望用户只能通过单击tablayout来转到另一个页面。我已经禁用了此viewageer2的用户输入。但是当我单击选项卡时,页面之间会出现快速滑动的动画。但是我只想显示新的片段。就像FragmentTransaction一样,但是使用viewageer2和tablayout。有人知道怎么做吗?


共3个答案

匿名用户

您应该像这样使用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. isUserInputEn可启用=false

注意:setCurrentItem(int item,布尔平滑滚动)

设置当前选中页面平滑滚动,如果设置平滑滚动为false,则看不到动画

匿名用户

TabLayoutMediator就是你需要的。只需将SmashScroll设置为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

匿名用户

我认为viewpageer2. setPageTransformer(null)可能会给你你需要的

https://developer.android.com/reference/kotlin/androidx/viewpager2/widget/ViewPager2#setpagetransformer

注意:设置PageTransformer会禁用数据集更改动画,以防止两个动画系统之间发生冲突。设置空转换器将恢复数据集更改动画。