react navigation - tabNavigator 詳細(xì)配置(中文版)

說明

本文是根據(jù) navigation action 的官方最新文檔一步一步寫出來的配置尚氛,沒個配置都有加詳細(xì)的說明辛掠,如果說明不夠理解請將頁面滾動到最底部 加 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 導(dǎo)航 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,
                /**
                 * 當(dāng)前 tab 的 label  如果 headerTitle 或者 tabBarLabel 沒有指定則使用該屬性
                 */
                title: 'Notifications',
                /**
                 * 是否啟用滑動
                 */
                swipeEnabled: false,
                /**
                 * 點擊是觸發(fā)該方法
                 * 
                 * @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: 底部
         * 默認(rèn)情況 安卓頂部顯示于置,IOS底部顯示
         */
        tabBarPosition: 'bottom',
        /**
         * 是否允許在手勢滑動 true or false 建議不設(shè)置
         */
        swipeEnabled: false,
        /**
         * 路由切換時是否開啟過渡動畫效果 不設(shè)置
         */
        animationEnabled: false,
        /**
         * 默認(rèn)顯示的屏幕
         */
        initialRouteName: 'Me',
        /**
         * 定義 tab 選項卡顯示的順序或個數(shù)
         */
        // order: ['Home', 'Notifications'],
        /**
         * 待定
         */
        // backBehavior: true,
        /**
         * tabBar 的配置
         */
        tabBarOptions: {
            /**
             * 是否顯示 label 文字 true or false
             * 
             * @default true
             */
            showLabel: true,
            /**
             * 是否顯示 Icon
             * ios 默認(rèn)為true
             * android 默認(rèn)為false
             */
            showIcon: true,
            /**
             * label 文字是否大寫
             * android 默認(rèn) true
             * ios 默認(rèn) false
             */
            upperCaseLabel: false,
            /**
             * 點擊波紋樣式
             * android >= only
             */
            // pressColor: '#000',
            /**
             * 按下的不透明度
             * ios and android < 5.0 only
             */
            pressOpacity: 0.2,
            /**
             * tab 是否開啟滾動 待測試
             */
            // scrollEnabled: true,
            // tabStyle: {
            //     backgroundColor: '#f0f0f0'
            // },
            /**
             * 指示器的樣式設(shè)置  only andriod
             */
            indicatorStyle: {
                backgroundColor: '#fff',
                flex: 1,
                height: 50
            },
            /**
             * 底部導(dǎo)航 文字 部分樣式
             */
            labelStyle: {
                // color: '#000000',
                fontSize: 11,
                marginTop: Platform.OS === 'ios' ? 14 : 0
            },
            /**
             * 底部導(dǎo)航 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'
        }
    }
)

如果你對文章感興趣 或者有其他技術(shù)問題探討

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末劣光,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子称开,更是在濱河造成了極大的恐慌亩钟,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鳖轰,死亡現(xiàn)場離奇詭異径荔,居然都是意外死亡,警方通過查閱死者的電腦和手機脆霎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狈惫,“玉大人睛蛛,你說我怎么就攤上這事‰侍福” “怎么了忆肾?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長菱肖。 經(jīng)常有香客問我客冈,道長,這世上最難降的妖魔是什么稳强? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任场仲,我火速辦了婚禮和悦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘渠缕。我一直安慰自己鸽素,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布亦鳞。 她就那樣靜靜地躺著馍忽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪燕差。 梳的紋絲不亂的頭發(fā)上遭笋,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音徒探,去河邊找鬼瓦呼。 笑死,一個胖子當(dāng)著我的面吹牛刹帕,可吹牛的內(nèi)容都是我干的吵血。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼偷溺,長吁一口氣:“原來是場噩夢啊……” “哼蹋辅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挫掏,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤侦另,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后尉共,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褒傅,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年袄友,在試婚紗的時候發(fā)現(xiàn)自己被綠了殿托。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡剧蚣,死狀恐怖支竹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鸠按,我是刑警寧澤礼搁,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站目尖,受9級特大地震影響馒吴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一饮戳、第九天 我趴在偏房一處隱蔽的房頂上張望豪治。 院中可真熱鬧,春花似錦莹捡、人聲如沸鬼吵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽齿椅。三九已至,卻和暖如春启泣,著一層夾襖步出監(jiān)牢的瞬間涣脚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工寥茫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留遣蚀,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓纱耻,卻偏偏與公主長得像芭梯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子弄喘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,264評論 25 707
  • 在交流中感悟 最近與[技術(shù)鳥]的一個初入軟件開發(fā)行業(yè)的小伙伴交流了一下關(guān)于軟件開發(fā)流程和程序模板的問題蘑志,結(jié)合自己這...
    亦楓閱讀 8,703評論 11 9
  • 從小就喜歡一種感覺:小的大不一樣累奈! 看過康納森·斯威夫特寫的《格列佛游記》,里面有小人國急但,有大人國澎媒,那時候小,總覺...
    蘇唯若閱讀 542評論 1 0
  • 主要講tfboys和三個女孩愛情故事波桩,也是校園故事
    淺憶冰沁閱讀 233評論 0 0