react-navigation学习笔记五:createBottomTabNavigator

搭建demo使用相关版本:
"react-native": "0.56.0",
"react-navigation": "^2.18.2"

介绍

移动应用程序中最常见的导航风格可能是基于标签的导航。这可以是屏幕底部或标题下方顶部的标签。官网介绍

简单使用 相关介绍都注释在代码里面了

//createBottomTabNavigator
import React from 'react';
import {Text, View, Image, Button, Dimensions, TouchableOpacity} from 'react-native';
import {createBottomTabNavigator} from 'react-navigation';


//自定义tabBar
const tabBar = () => {
    return <View style={{backgroundColor: 'red', height: 44}}>
        <Text>自定义的tabBar</Text>
    </View>
}

//自定义的tabBarButton
const HomeBtn = () => {
    return <TouchableOpacity
        style={{
            backgroundColor: 'blue',
            width: Dimensions.get('window').width / 2,
            height: 50,
            alignItems:'center',
            justifyContent:'center'
        }}
        onPress={() => {
            console.log('点击了主页')
        }}
    >
        <Text style={{color:'white',fontSize:20}}>主页</Text>

    </TouchableOpacity>
}

//路由组件
class HomeScreen extends React.Component {
    static navigationOptions = {
        //tabBarButton  自定义button
        //这个和title与tabBarIcon  冲突
        tabBarButtonComponent: HomeBtn
    }

    render() {
        return (
            <View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
                <Text>this is HomeScreen!</Text>
            </View>
        );
    }
}

class RecordScreen extends React.Component {
    //用于导航器内的屏幕
    static navigationOptions = {
        // tabBarVisible: true,//true或false显示或隐藏标签栏,如果未设置则默认为true。
        // tabBarAccessibilityLabel: '', //选项卡按钮的辅助功能标签。当用户点击标签时,屏幕阅读器会读取此信息。如果您没有选项卡的标签,建议设置此项。
        // tabBarTestID: '',//用于在测试中找到此选项卡按钮的ID。

        //通用标题可以用作备用headerTitle和tabBarLabel。
        title: '档案',
        //设置tabBarButton的图像
        tabBarIcon: ({focused, horizontal, tintColor}) => {
            return <Image
                source={require('./image/homeH.png')}
                style={{width: 22, height: 22, tintColor: tintColor}}
            />
        },
        //回调处理新闻事件; 参数是一个对象,包含:navigation:屏幕导航道具  defaultHandler:tab按下的默认处理程序
        tabBarOnPress: (event) => {
            event.defaultHandler();//调用组建内默认的实现方法
            console.log('点击了某个tabBatBtn' + event);

        },

        // //tabBarButton  自定义button
        // //这个和title与tabBarIcon  冲突
        // tabBarButtonComponent: () => {
        //
        // },


    }

    render() {
        return (
            <View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
                <Text>this is RecordScreen!</Text>
            </View>
        );
    }
}

//入口
export default createBottomTabNavigator(
    {
        Home: {screen: HomeScreen},
        Record: {screen: RecordScreen},
    }, {
        initialRouteName: 'Record', //首次加载时初始制表符路径的routeName。
        order: ['Record', 'Home'], //routeNames数组,用于定义选项卡的顺序。

        //可用来自定义  tabBar  这个与下面的tabBarOptions有冲突 配置一个就好了
        // tabBarComponent: tabBar,//可选,覆盖用作标签栏的组件。


        //tabBar 相关配置具有以下属性的对象:
        tabBarOptions: {
            activeTintColor: 'blue',//活动选项卡的标签和图标颜色。
            activeBackgroundColor: 'red',//活动选项卡的背景颜色。
            inactiveTintColor: 'yellow',//非活动选项卡的标签和图标颜色。
            inactiveBackgroundColor: 'pink',//非活动选项卡的背景颜色。

            // showLabel: true,//是否为标签显示标签,默认为true。
            // showIcon: true,//是否显示选项卡的图标,默认为true。

            // style: {},//标签栏的样式对象。
            labelStyle: {//选项卡标签的样式对象。
                fontSize: 20
            },
            // tabStyle: {},//选项卡的样式对象。

            // allowFontScaling: true,//标签字体是否应缩放以符合“文本大小”辅助功能设置,默认为true。

            // //覆盖forceInset道具 < SafeAreaView >。
            // // 默认为{bottom:'always', top:'never'}。可用键top | bottom | left | right随值提供'always' | 'never'。
            // safeAreaInset: {
            //     bottom: 'always',
            //     top: 'never'
            // },
        }
    }
);

API官网介绍

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,907评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,709评论 2 59
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_X自主阅读 15,975评论 3 119
  • 寂静而又无聊的时候 我就想一些人和事 就从身边想起,从现在,到过去,一直往后 再想,就到了童年 没有任何血缘关系的...
    jidi寂地阅读 257评论 0 0
  • 小公举七月中旬来义乌过暑假,但七月份工作太忙了,没有给她好好的陪伴!上周六跟上司成功协调到了三天假期,感...
    金兰兰阅读 162评论 3 1