我为他扩展了FragmentStateAdapter。我希望用户只能通过单击tablayout来转到另一个页面。我已经禁用了此viewageer2的用户输入。但是当我单击选项卡时,页面之间会出现快速滑动的动画。但是我只想显示新的片段。就像FragmentTransaction一样,但是使用viewageer2和tablayout。有人知道怎么做吗?
您应该像这样使用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会禁用数据集更改动画,以防止两个动画系统之间发生冲突。设置空转换器将恢复数据集更改动画。