在 viewpager2 中禁用动画

Den*_*ndd 5 android kotlin android-tablayout android-viewpager2

我为他提供了扩展 FragmentStateAdapter 的 viewpager2 和适配器。我希望用户仅通过单击 tablayout 才能转到另一个页面。我已禁用此 viewpager2 的用户输入。但是当我点击选项卡时,页面之间有快速滑动的动画。但我只想显示新片段。与 FragmentTransaction 类似,但使用 viewpager2 和 tablayout。有谁知道怎么做?

Kas*_*mir 9

您应该像这样使用 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) }
        }

    })
Run Code Online (Sandbox Code Playgroud)

您已经使用

viewPager.isUserInputEnabled = false

注意: setCurrentItem(int item, boolean smoothScroll)

使用平滑滚动设置当前选择的页面。如果将平滑滚动设置为 false,则看不到动画


小智 6

TabLayoutMediator是你所需要的。只需设置smoothScroll为false。

public TabLayoutMediator(
  @NonNull TabLayout tabLayout,
  @NonNull ViewPager2 viewPager,
  boolean autoRefresh,
  boolean smoothScroll,
  @NonNull TabConfigurationStrategy tabConfigurationStrategy) 
Run Code Online (Sandbox Code Playgroud)

https://developer.android.com/reference/com/google/android/material/tabs/TabLayoutMediator