【问题标题】:ViewPager2 disable transition animationViewPager2 禁用过渡动画
【发布时间】:2020-05-25 00:01:58
【问题描述】:

我有 ViewPager2 与 TabLayout 连接。其他引用 ViewPager 的帖子提供覆盖 setCurrentItem(position, false) ,其中 false 禁用平滑滚动。但是,TabLayoutMediator 调用 onTabSelected(TabLayout.Tab tab),后者调用 viewpager.setCurrentItem(postion, true)。如果 TabLayoutMediator 和 ViewPager2 都是最终的,我该如何覆盖此行为?

已经试过了:

viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
        @Override
        public void onPageSelected(int position) {
            viewPager.setCurrentItem(position, false);
        }
    });

并像这样覆盖 onTabSelected:

     tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(viewPager.getPosition(), false);
        }
         ......
    }

【问题讨论】:

  • 我也有同样的问题。在具有许多视图的选项卡之间切换时动画会滞后,我觉得奇怪的是没有明确的方法可以禁用它(他们是否假设每个人都只使用 2-3 个选项卡?)。我查看了以前的 ViewPager,但似乎它使用的 FragmentPageAdapter 在 API 27+ 上已被弃用。

标签: android android-tablayout android-viewpager2


【解决方案1】:

这是在材料的 1.2.0-alpha05 发布中添加的,更准确地说是在此 PR 中:https://github.com/material-components/material-components-android/pull/951。

如果您导入上述版本,如:

implementation "com.google.android.material:material:1.2.0-alpha05"

你可以禁用动画效果:

TabLayoutMediator(tab_layout, view_pager, false, false) { tab, position ->
  ...
}.attach()

TabLayoutMediator 的最后两个参数分别是 autoRefresh 和 smoothScroll。

希望这会有所帮助。

【讨论】:

  • 奇怪...我认为您在 github 评论中指出的那一行是关于仅选择初始位置,稍后应考虑布尔值。您是否有机会在 github 中有可重现的样本?
  • 这是一个奇怪的问题,通过更改 UI 得到了解决。我真的不知道是什么让它错了。我已删除问题链接,以免错误地解决其他问题。
猜你喜欢
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 2011-11-04
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多