react navigation - tabNavigator

2018-01-25  本文已影响0人  静夜秋雨

说明

本文是根据 navigation action 的官方最新文档一步一步写出来的配置,没个配置都有加详细的说明,如果说明不够理解请将页面滚动到最底部 加 qq 群一起讨论
下面代码注释可以取消看效果

如果你觉得该文章对你有帮助加个喜欢,github 加个 start 谢谢
import React, { Component } from 'react'
import { Platform, StyleSheet, View, Text, Button, Image } from 'react-native'
import { TabNavigator } from 'react-navigation'
import Ionicons from 'react-native-vector-icons/Ionicons'

class MyHomeScreen extends Component {
    render() {
        return (
            <Button
                onPress={() => {
                    this.props.navigation.navigate('Notifications')
                }}
                title="Go to notifications"
            />
        )
    }
}

class MyNotificationsScreen extends Component {
    render() {
        return (
            <Button
                onPress={() => {
                    this.props.navigation.goBack()
                }}
                title="Go back home"
            />
        )
    }
}

class Me extends Component {
    render() {
        return <Text>Meeee</Text>
    }
}

const styles = StyleSheet.create({
    icon: {
        width: 26,
        height: 26
    }
})

export default TabNavigator(
    {
        Home: {
            screen: MyHomeScreen,
            navigationOptions: {
                /**
                 * tab 导航 icon
                 */
                tabBarIcon: ({ tintColor, focused }) =>
                    <Ionicons
                        name={focused ? 'ios-home' : 'ios-home-outline'}
                        size={26}
                        style={{ color: tintColor }}
                    />
            }
        },
        Notifications: {
            screen: MyNotificationsScreen,
            navigationOptions: {
                /**
                 * icon
                 */
                tabBarIcon: ({ tintColor, focused }) =>
                    <Ionicons
                        name={focused ? 'ios-alarm' : 'ios-alarm-outline'}
                        size={26}
                        style={{ color: tintColor }}
                    />,
                /**
                 * 底部 tab 的 label 值 可以是一个 react 元素
                 */
                tabBarLabel: 'fdsaf',
                /**
                 * 底部 tab 是否显示
                 */
                tabBarVisible: true,
                /**
                 * 当前 tab 的 label  如果 headerTitle 或者 tabBarLabel 没有指定则使用该属性
                 */
                title: 'Notifications',
                /**
                 * 是否启用滑动
                 */
                swipeEnabled: false,
                /**
                 * 点击是触发该方法
                 * 
                 * @param {Function} 去哪一个页面
                 * @param {Object} scene
                 */
                tabBarOnPress({ jumpToIndex, scene }) {
                    jumpToIndex(scene.index)
                }
            }
        },
        Me: {
            screen: Me,
            navigationOptions: {
                tabBarIcon: ({ tintColor, focused }) =>
                    <Ionicons
                        name={focused ? 'ios-person' : 'ios-person-outline'}
                        size={26}
                        style={{ color: tintColor }}
                    />
            }
        }
    },
    {
        /**
         * tab 显示的位置
         * top:顶部
         * bottom: 底部
         * 默认情况 安卓顶部显示,IOS底部显示
         */
        tabBarPosition: 'bottom',
        /**
         * 是否允许在手势滑动 true or false 建议不设置
         */
        swipeEnabled: false,
        /**
         * 路由切换时是否开启过渡动画效果 不设置
         */
        animationEnabled: false,
        /**
         * 默认显示的屏幕
         */
        initialRouteName: 'Me',
        /**
         * 定义 tab 选项卡显示的顺序或个数
         */
        // order: ['Home', 'Notifications'],
        /**
         * 待定
         */
        // backBehavior: true,
        /**
         * tabBar 的配置
         */
        tabBarOptions: {
            /**
             * 是否显示 label 文字 true or false
             * 
             * @default true
             */
            showLabel: true,
            /**
             * 是否显示 Icon
             * ios 默认为true
             * android 默认为false
             */
            showIcon: true,
            /**
             * label 文字是否大写
             * android 默认 true
             * ios 默认 false
             */
            upperCaseLabel: false,
            /**
             * 点击波纹样式
             * android >= only
             */
            // pressColor: '#000',
            /**
             * 按下的不透明度
             * ios and android < 5.0 only
             */
            pressOpacity: 0.2,
            /**
             * tab 是否开启滚动 待测试
             */
            // scrollEnabled: true,
            // tabStyle: {
            //     backgroundColor: '#f0f0f0'
            // },
            /**
             * 指示器的样式设置  only andriod
             */
            indicatorStyle: {
                backgroundColor: '#fff',
                flex: 1,
                height: 50
            },
            /**
             * 底部导航 文字 部分样式
             */
            labelStyle: {
                // color: '#000000',
                fontSize: 11,
                marginTop: Platform.OS === 'ios' ? 14 : 0
            },
            /**
             * 底部导航 icon 部分样式
             */
            // iconStyle: {
            //     color: '#ff0000'
            // },
            /**
             * 底部 tab 容器样式
             */
            style: {
                backgroundColor: '#fff',
                height: 50,
                borderTopColor: '#f1f1f1',
                shadowColor: '#aaa',
                shadowOffset: {
                    width: 0,
                    height: 4
                },
                shadowOpacity: 0.6,
                shadowRadius: 10
            },
            /**
             * 选中时的 tab label 和 icon 的颜色
             */
            activeTintColor: '#ff0000',
            /**
             * 选中时的 tab 的背景色 ios 专属
             */
            activeBackgroundColor: '#ffffff',
            /**
             * 未选中时的 tab label 和 icon 的颜色
             */
            inactiveTintColor: '#000',
            /**
             * 未选中时的 tab 的背景色 ios 专属
             */
            inactiveBackgroundColor: '#fff'
        }
    }
)

如果你对文章感兴趣 或者有其他技术问题探讨

qq群:218618405
github 地址:https://github.com/Sawyer-china/
本实例 地址: https://github.com/Sawyer-china/react-navigation-demo

上一篇下一篇

猜你喜欢

热点阅读