直奔主题:在使用React Native Navigator的时候,很多同学跟我一样,上来就用,但是用了发现一个问题,那就是如下图:
看到此处 登录的文字,为毛android上就要跑偏了,当然毕竟使系统的问题,但是对于我们要求必须在中间的怎么办,我还想在navigator上添加其他的图片按钮等等,怎么办?看看效果,其实我们更希望是这样的:
当然,这里做的 是使用官方的navigator api 而不是自己在页面中模仿的一个view,不然下面说的也没有任何意义,直接上图片代码和源码:
///自定义路由导航
class NavigationBar extends Navigator.NavigationBar {
render() {
var routes = this.props.navState.routeStack;
if (routes.length) {
var route = routes[routes.length - 1];
//返回null,导航将会消失,也就达到了隐藏导航栏的目的
if (route.display === false) {
return null;
}else{
// return super.render(); //这是调用系统提供的UI,我们不管直接注释掉,自己写一个自己需要的
return (
<View style={{position:'absolute',top:0,left:0,width:width,height:Platform.OS === 'ios' ? 64 : 56,backgroundColor:'#f9f9f9',paddingTop:Platform.OS === 'ios' ? 20 : 20,justifyContent:'center',alignItems:'center'}}>
<View>
<Text>{route.name}</Text>
</View>
</View>
);
}
}
}
}
好了到这里,估计大家都明白了 我们继承了React Native 中的Navigator.NavigationBar,然后重写了render这个方法,这样就自定义了官方给我们提供的NavigationBar。随便控制吧 有route 什么都有 实现各种导航点击 搜索也不是问题。