React Native Router Flux Android端如何禁用Tab切换滑动动画?
解决React Native Router Flux Tab切换时的滑动动画问题
我懂你这困扰——React Native Router Flux里切换Tab时的滑动动画真的闹心:首尾Tab切换时能看到中间页面闪过去,旧机型还卡得不行,而且你试了duration={0}也没效果对吧?来试试这几个方案,应该能彻底搞定:
1. 给外层Tabs直接禁用动画
你之前只设置了swipeEnabled={false},这只是关掉了滑动切换的手势,但Tab切换的过渡动画还在。直接给Tabs组件加上animationEnabled={false},这是最直接的关闭容器级动画的方式:
<Tabs key="tabbar" style={{height: tabSize, borderTopWidth: 0.5, borderColor: "black"}} showLabel={false} showIcon={true} tabBarPosition='bottom' type={ActionConst.REPLACE} swipeEnabled={false} animationEnabled={false} // 新增这行,直接关闭Tab切换动画 activeBackgroundColor="white" inactiveBackgroundColor="white" > {/* 你的子Stack和Scene */} </Tabs>
2. 给子Stack也禁用动画
如果上面的设置还没完全生效,检查每个子Stack是否继承了动画属性,给它们也加上animationEnabled={false}:
<Stack key="profile_tab" hideNavBar type={ActionConst.REPLACE} icon={ProfileTabContent} animationEnabled={false} // 给子Stack也关闭动画 > <Scene key="profilePage" component={ProfilePage} duration={0} type={ActionConst.REPLACE} initial hideNavBar={true} /> </Stack>
3. 自定义过渡配置彻底锁死动画
要是还有残留的动画痕迹,就给Tabs加个自定义的transitionConfig,返回完全无动画的配置:
// 先导入需要的组件 import { Animated, Easing } from 'react-native'; // 然后在Tabs里添加配置 <Tabs // 其他属性... transitionConfig={() => ({ transitionSpec: { duration: 0, timing: Animated.timing, easing: Easing.step0, }, })} > {/* 子组件 */} </Tabs>
为啥之前的duration={0}没用?
你之前给单个Scene设置duration={0},只控制了这个Scene自身的进出动画,但Tab切换的过渡动画是由外层Tabs容器管控的,所以得在容器层级做配置才行~
内容的提问来源于stack exchange,提问作者Psyycker
相关产品推荐
相关产品推荐

