ViewPager2 отключить переход анимации - PullRequest
1 голос
/ 09 февраля 2020

У меня есть ViewPager2, связанный с TabLayout. Другие сообщения, ссылающиеся на ViewPager, предлагают переопределить setCurrentItem (position, false), где false отключает плавную прокрутку. Однако TabLayoutMediator вызывает onTabSelected (вкладка TabLayout.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);
        }
         ......
    }

1 Ответ

0 голосов
/ 01 апреля 2020

Это было добавлено в выпуске 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.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...