react-navigation,StackNavigator,TabNavigator 导航使用
- StackNavigator 参考这里
- TabNavigator 参考这里
是一个组合,我把这2个写在一起了
代码:
import React, { Component } from 'react';
import {StyleSheet,Text,Button,View,TabBarItem} from 'react-native';
import {StackNavigator,TabNavigator} from 'react-navigation';
import Icon from 'react-native-vector-icons/Feather';//图标库
import { IS_ANDROID, IS_IOS } from './config/base';
//底部导航栏 ----- start ---------
const TabSty = new Object();
if(IS_IOS){
    TabSty = {
        activeTintColor:'#6b52ae', //活动选项卡的标签和图标颜色。
//          activeBackgroundColor:'#000',//活动选项卡的背景颜色
            inactiveTintColor:'#333',//非活动选项卡的标签和图标颜色。
//          inactiveBackgroundColor:'#fff',//非活动选项卡的背景颜色
        labelStyle:{//标签标签的样式对象
                fontSize:,
                marginBottom:
            }
    }
}else if(IS_ANDROID){
    TabSty = {
        activeTintColor:'#6b52ae', //活动选项卡的标签和图标颜色。
            inactiveTintColor:'#333',//非活动选项卡的标签和图标颜色。
            showIcon:true,//是否显示标签图标,默认为false。
            pressOpacity:0.1,//按下标签的不透明度
            pressColor:'#ccc',//材质纹波的颜色(仅限Android> = 5.0)--按下的水印
            tabStyle:{//选项卡的样式对象。
                paddingTop:
            },
            labelStyle:{//标签标签的样式对象
                fontSize:,
               margin:
            },
            //选项卡指示符的样式对象(选项卡底部的行)。
            indicatorStyle:{
                height:
            }
    }
}
//标签栏的样式对象。
TabSty.style = {
    height:,
    backgroundColor:'#fff'
}
const Tab = TabNavigator(
    {
        Home:{
            screen: require('./components/index/index.js').default,//该底部导航栏该项对应的页面
            navigationOptions: ({ navigation }) => ({
                title:'消息',//页面标题
                tabBarLabel: '消息',//导航栏该项标题
                tabBarIcon: ({ tintColor, focused }) => (  //tintColor -- 这个是  状态切换的时候给图标不同的颜色
                      <Icon name="message-square" style={{color:tintColor,fontSize:}}/>
                )
            }),
        },
        Nearby:{
            screen: require('./components/index/index.js').default,
            navigationOptions: ({ navigation }) => ({
                    title:'工作台',
                tabBarLabel: '工作台',
                tabBarIcon: ({ tintColor, focused }) => (
                      <Icon name="home" style={{color:tintColor,fontSize:}}/>
                )
            }),
        },
        Message:{
            screen: require('./components/index/index.js').default,
            navigationOptions: ({ navigation }) => ({
                    title:'我的',
                tabBarLabel: '我的',
                tabBarIcon: ({ tintColor, focused }) => (
                   <Icon name="user" style={{color:tintColor,fontSize:}}/>
                )
            }),
        }
    },
    {
        tabBarPosition: 'bottom',
        swipeEnabled: true,//标签之间进行滑动
        animationEnabled: true,
        lazy: true,// 是否懒加载
        tabBarOptions:TabSty
    }
);
//底部导航栏 ----- end ---------
//定义  StackNavigator  导航跳转 ---  start ------
//工作台模块
import indexRout from './rout/indexRout.js';
const androidTitleSty = new Object();
const Navigator = StackNavigator(
    {
            Tab: {screen:Tab},
            ...indexRout
    },
    {
    //设置导航栏公用的样式
        navigationOptions:({ navigation }) => ({
                //设置导航条的样式。背景色,宽高等
                headerStyle:{
                },
                //设置导航栏文字样式
                headerTitleStyle:{
                    flex:,
                    textAlign:'center',
                   fontWeight:'normal',
                   fontSize:,
                   color:'#666'
                },
                headerBackTitle:null,
                //返回箭头重写
                headerLeft:() => {
                    return <Icon name="chevron-left" onPress={()=>navigation.goBack()}  style={styles.icon}/>;
                }
        })
    },
);
//定义  StackNavigator  导航跳转 ---  end ------
//样式
const styles = StyleSheet.create({
    icon:{
        fontSize:,
        color:'#444',
        backgroundColor:'transparent'
    }
});
export default Navigator;
indexRout.js:
这个js的内容其实完全可以放在 Navigator 这个里面的 Tab 下面只是我想把它分开,所以分开写了
//工作台路由
export default rout = {
//固定投资
fixedInvestList:{
screen:require('../components/index/fixedInvest/list.js').default,
navigationOptions:({ navigation }) => ({
title:'列表页面'
})
},
fixedInvestDetails:{
screen:require('../components/index/fixedInvest/details.js').default,
navigationOptions:({ navigation }) => ({
title:'详情页面'
})
}
}
图标库的使用 可以看这里 react-native-vector-icons 图标库使用
在定义 底部导航栏的时候 之所以分为 ios 和 android 分开设置 ,是因为 2者的参数 和设置 还是有差别的,只是把 style 标签栏的样式对象,这个属性设置在一起的,具体的可以区看上面
的链接,就能清楚
效果如图

在android ,ios 上效果是一样的
react-navigation,StackNavigator,TabNavigator 导航使用的更多相关文章
- React native中DrawerNavigator,StackNavigator,TabNavigator导航栏使用
		import React from 'react'; import { View, Text,Button } from 'react-native'; import { DrawerNavigato ... 
- Facebook力推导航库:React Navigation使用详解
		本文来自Songlcy投稿:文章地址:http://blog.csdn.net/u013718120/article/details/72357698 一.开源库介绍 今年1月份,新开源的react- ... 
- React-native 导航插件React Navigation 4.x的使用
		React-native 导航插件React Navigation 4.x的使用 文档 英文水平可以的话,建议直接阅读英文文档 简单使用介绍 安装插件 yarn add react-navigatio ... 
- React Navigation / React Native Navigation 多种类型的导航结合使用,构造合理回退栈
		React Navigation 更新到版本5已经是非常完善的一套导航管理组件, 提供了Stack , Tab , Drawer 导航方式 , 那么我们应该怎样设计和组合应用他们来构建一个完美的回退栈 ... 
- React Native 系列(八) -- 导航
		前言 本系列是基于React Native版本号0.44.3写的.我们都知道,一个App不可能只有一个不变的界面,而是通过多个界面间的跳转来呈现不同的内容.那么这篇文章将介绍RN中的导航. 导航 什么 ... 
- react-native 学习 ----- React Navigation
		很久没有的登陆博客园了,密码都是找回的,从当年的大学生已经正常的走上了程序员的道路,看到之前发的博客还是写的android,现在自己已经在使用了react-native了. 大学毕业了,做了java后 ... 
- react-native导航器 react navigation 介绍
		开发环境搭建好之后,想要进一步了解react-native,可以先从react-native官网上的电影列表案例入手: https://reactnative.cn/docs/0.51/sample- ... 
- [RN] 04 - React Navigation
		react-navigation和react-router的对比: 支持的平台: react-navigation: react-native react-router: react-native.r ... 
- React Native常用组件之TabBarIOS、TabBarIOS.Item组件、Navigator组件、NavigatorIOS组件、React Navigation第三方
		以下内容为老版本React Native,faceBook已经有了新的导航组件,请移步其他博客参考>>[我是传送门] 参考资料:React Navigation react-native ... 
随机推荐
- hadoop 伪分布式安装
			0. 关闭防火墙 重启后失效 service iptables start ;#立即开启防火墙,但是重启后失效. service iptables stop ;#立即关闭防火墙,但是重启后失效. 重启 ... 
- MyBatis #{} 和 ${} 引用值的用法
			1.#{} 引用值的用法 UserMapper配置文件: <select id="queryOne" resultType="cn.tedu.mybatis.bea ... 
- HTML和SEO基础知识:H标签全透视
			原文地址:http://www.chinaz.com/web/2010/0921/134391.shtml 什么是H标签? h1,h2,h3,h4,h5,h6,作为标题标签,并且依据重要性递减.我认为 ... 
- Fibonacci数列的两种实现方式
			斐波那契数列的形式为:1,1,2,3,5,8,13,21......从第三项开始,后面的每一项都是前面两项的和. 实现的方式有一下 两种: 一:递归方式实现 def fib(n): if n < ... 
- [UE4]反射
			1.根据名字获得类(C++支持,蓝图本身不支持但可以通过工厂模式模拟) 国外大神提供的封装好的C++实现: https://github.com/getsetgames/BlueprintReflec ... 
- [UE4]子弹穿透多个机器人
			一.将机器人的碰撞类型改成“OverLap” 二.使用“MultiLineTraceByChannel”这个是可以穿透检测,可以检测到多个物体(前提是被检测物体的碰撞类型是“OverLap”).“Li ... 
- 去掉user agent stylesheet 浏览器默认样式 [ 2.0 版本 ]
			今天在写一个网页的时候发现一个问题,我的table的样式很奇怪,也没有设置什么样式,跟其他的页面不一样,打开开发者工具一看,发现有这么点样式: 其中右上角:user agent stylesheet ... 
- 通过注解实现一个简易的Spring mvc框架
			1.首先我们来搭建架构,就建一个普通的javaweb项目就OK了,具体目录如下: 对于小白来说可以细看后面web.xml的配置,对javaweb有点研究可以忽略而过后面的web.xml配置. 2.先上 ... 
- int main(int argc,char* argv[])浅析
			int main(int argc,char* argv[])浅析 argc : 指输入参数个数,默认值1,就是执行程序名称 argv[] : 输入参数数组指针 举个栗子: 1. 编写一个argc.c ... 
- vue2.0-组件传值
			父组件给子组件传值,子组件用props接收 例子:两个组件,一个是父组件标签名是parent,一个是子组件标签名是child,并且child组件嵌套在父组件parent里,大概的需求是:我们子组件里需 ... 
