Android IOS移动开发ReactNative笔记React Native开发经验集

ReactNative学习笔记九之TabNavigator

2017-07-17  本文已影响285人  mymdeep

之前写过一个关于StackNavigator的文章,如果感兴趣的同学可以翻一下我之前的文章(链接在文章末尾)。TabNavigator是我要介绍的关于react-navigation的第二个组件。


安装以及相关问题

首先要想使用react-navigation,需要先进行安装:

 npm install --save react-navigation

简单示例

在这里我先写一个简单的示例,下面会不断的扩展介绍:

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from 'react-native';
import Home from './Home'
import { TabNavigator } from 'react-navigation';

import Second from './Second'
const TestTab = TabNavigator({
    Home: { screen: Home },
    Second: { screen: Second },
});

AppRegistry.registerComponent('TestTab', () => TestTab);

Home和Second是我随便写的两个简单界面,这里不再多说了。只需要一个
const TestTab = TabNavigator({ Home: { screen: Home }, Second: { screen: Second }, });
就可以实现一个TabNavigator:

option

看过我之前写的StackNavigator的文章都知道,可以通过设置option改变Navigator的样式。
现在试一下:

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
    Image,
  View
} from 'react-native';
import Home from './Home'
import { TabNavigator } from 'react-navigation';

import Second from './Second'
const TestTab = TabNavigator({
    Home: { screen: Home,
        navigationOptions: {

            tabBarLabel: '第一个',
            tabBarIcon: ({tintColor}) => (
                    <Image
                        source={require('./images/home.png')}
                        style={[{tintColor: tintColor},styles.icon]}
                    />
                ),

        }
},
    Second: { screen: Second,
        navigationOptions: {
            tabBarLabel: '第二个',
            tabBarIcon: ({tintColor}) => (
                <Image
                    source={require('./images/second.png')}
                    style={[{tintColor: tintColor},styles.icon]}
                />
            ),

        }
    },


},
    {
        animationEnabled: true, // 切换页面时是否有动画效果
        tabBarPosition: 'top', // 显示在底端,android 默认是显示在页面顶端的
        swipeEnabled: true, // 是否可以左右滑动切换tab
        backBehavior: 'none', // 按 back 键是否跳转到第一个Tab(首页), none 为不跳转
        tabBarOptions: {
            activeTintColor: '#ff8500', // 文字和图片选中颜色
            inactiveTintColor: '#999', // 文字和图片未选中颜色
            showIcon: true, // android 默认不显示 icon, 需要设置为 true 才会显示
            indicatorStyle: {
                height: 0  // 如TabBar下面显示有一条线,可以设高度为0后隐藏
            },
            style: {
                backgroundColor: '#fff', // TabBar 背景色
                // height: 44
            },
            labelStyle: {
                fontSize: 10, // 文字大小
            },
        },
    });
const styles = StyleSheet.create({
    icon: {
        width: 26,
        height: 26,
    },
});
AppRegistry.registerComponent('TestTab', () => TestTab);

具体配置属性的含义,可以参照后面的注释。

这里要注意:之前的版本设置tabbar的标题和图片用的是:tabBar: { label: 'xxx', icon: ({tintColor}) => ( <Image source={require('../images/xxx.png')} style={[{tintColor: tintColor},styles.icon]} /> ), },但是现在去用的就是tabBarLabel,这跟react-navigation的版本有关

效果如下:

属性

除了上面提到的属性,接下来介绍一下其他可能会用到的属性。
标准的TabNavigator的构造函数有两个参数:

TabNavigator(RouteConfigs, TabNavigatorConfig)

TabNavigatorConfig

tabBarOptions(TabBarBottom)

tabBarOptions(TabBarTop)

Screen Navigation Options

总结

这是关于TabNavigator的所有介绍,关于上面介绍的参数,我也是翻译的官网上的,之后还会介绍DrawerNavigator,但也许不是下一篇文章,需要的朋友也可以给我留言。


之前文章合集:
Android文章合集
iOS文章合集
ReactNative文章合集
如果你也做ReactNative开发,并对ReactNative感兴趣,欢迎关注我的公众号,加入我们的讨论群:

上一篇下一篇

猜你喜欢

热点阅读