ReactNative學習筆記九之TabNavigator

mymdeep發表於2019-03-04

之前寫過一個關於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

  • tabBarComponent – tab bar的元件
  • tabBarPosition -bar的位置,是在上面還是在下面,上述demo都是在上面
  • swipeEnabled -是否支援左右滑動
  • animationEnabled – 是否有動畫
  • lazy – 懶載入
  • tabBarOptions這個看下面的詳解
  • initialRouteName – 第一次進入的介面
  • order – 介面順序
  • paths – 可以設定跳轉順序
  • backBehavior – 按 back 鍵是否跳轉到第一個Tab(首頁), none 為不跳轉

tabBarOptions(TabBarBottom)

  • activeTintColor – 啟用版塊的顏色
  • activeBackgroundColor – 啟用版塊的背景顏色
  • inactiveTintColor – 非啟用版塊的顏色
  • inactiveBackgroundColor – 非啟用版塊的背景顏色
  • showLabel -是否顯示label
  • style – tab bar的style
  • labelStyle – label的style
  • tabStyle – tab的style

    tabBarOptions(TabBarTop)

  • activeTintColor – 啟用版塊的顏色
  • activeBackgroundColor – 啟用版塊的背景顏色
  • inactiveTintColor – 非啟用版塊的顏色
  • inactiveBackgroundColor – 非啟用版塊的背景顏色
  • showIcon – 是否顯示icon
  • showLabel -是否顯示label
    upperCaseLabel – label是否全部大寫,預設是true
    pressColor – 點選顏色 (Android >= 5.0 only)
    pressOpacity – 點選透明度(iOS and Android < 5.0 only)
    scrollEnabled – 是否使用scrollable
  • tabStyle – tab的style
  • indicatorStyle – 指示器style
  • labelStyle – label的style
  • iconStyle – icon的style
  • style – tab bar的style

    Screen Navigation Options

  • title 標題
  • tabBarVisible是否可見
  • tabBarLabel每一個tab的名稱
  • tabBarIcon 每一個tab的icon

總結

這是關於TabNavigator的所有介紹,關於上面介紹的引數,我也是翻譯的官網上的,之後還會介紹DrawerNavigator,但也許不是下一篇文章,需要的朋友也可以給我留言。


之前文章合集:
Android文章合集
iOS文章合集
ReactNative文章合集
如果你也做ReactNative開發,並對ReactNative感興趣,歡迎關注我的公眾號,加入我們的討論群:

相關文章