Отключить анимацию в viewpager2 - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть viewpager2 и адаптер для него, который расширяет FragmentStateAdapter. Я хочу, чтобы пользователь go перешел на другую страницу, только нажав на tablayout. Я отключил пользовательский ввод для этого viewpager2. Но когда я нажимаю на вкладку, появляется анимация быстрого пролистывания между страницами. Но я хочу показать только новый фрагмент. Как с FragmentTransaction, но с viewpager2 и tablayout. Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

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

Вы должны использовать 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)

Установить текущую выбранную страницу с плавной прокруткой. Если для параметра smooth scrool установлено значение false, анимация не отображается

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

Я думаю, viewpager2.setPageTransformer(null) может дать вам то, что вам нужно

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

Примечание: установка PageTransformer отключает анимацию изменения набора данных в предотвратить конфликты между двумя системами анимации. Установка нулевого преобразователя восстановит анимацию изменения набора данных.

...