IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> react-native-navigation 实现底部导航栏布局(Android) -> 正文阅读

[移动开发]react-native-navigation 实现底部导航栏布局(Android)

官方文档react-native-navigation文档

示例项目安装的模块的版本

"dependencies": {
    "react": "17.0.2",
    "react-native": "0.66.4",
    "react-native-navigation": "7.30.0-alpha"
 },

1、在react-native项目中安装react-native-navigation

$ yarn add react-native-navigation

RN 0.60 或更高版本,可以通过自动链接来执行必要的配置,运行$?npx rnn-link

2、 在文件src\navigation\index.js统一处理导航组件的注册及默认配置

import {
  Navigation
} from 'react-native-navigation'

// 全局样式
import globalStyles from '../styles'

// 页面组件
import Welcome from '../screen/Welcome'
import Home from '../screen/Home'
import Find from '../screen/Find'
import Detail from '../screen/Detail'
import List from '../screen/List'

// 注册组件
Navigation.registerComponent('Welcome', () => Welcome)
Navigation.registerComponent('Home', () => Home)
Navigation.registerComponent('Find', () => Find)
Navigation.registerComponent('Detail', () => Detail)
Navigation.registerComponent('List', () => List)

// 欢迎屏
export const WelcomeRoot = {
  root: {
    stack: {
      id: 'WELCOME',
      children: [{
        component: {
          name: 'Welcome'
        }
      }]
    }
  }
}

// 主屏
export const MainRoot = {
  root: {
    bottomTabs: {
      id: 'BOTTOM_TABS_LAYOUT',
      children: [
        // 每一个对象,是一个bottomTabs选项卡对象
        {
          stack: {
            id: 'HOME_TAB',
            children: [{
              component: {
                id: 'HOME',
                name: 'Home'
              }
            }],
            options: {
              bottomTab: {
                text: '首页',
                icon: require('../assets/images/tabBar/home.png'),
                selectedIcon: require('../assets/images/tabBar/home-h.png')
              }
            }
          }
        },
        {
          stack: {
            id: 'Find_TAB',
            children: [{
              component: {
                id: 'Find',
                name: 'Find'
              }
            }],
            options: {
              bottomTab: {
                text: '发现',
                icon: require('../assets/images/tabBar/find.png'),
                selectedIcon: require('../assets/images/tabBar/find-h.png')
              }
            }
          }
        }
      ]
    }
  }
}

// 全局App导航默认样式
Navigation.setDefaultOptions({
  // 手机状态栏配置
  statusBar: {
    backgroundColor: globalStyles.themeColor, // 状态栏背景色
    style: 'dark', // 手机模式,设置文字和手机信息字体颜色
    visible: true // 是否展示状态栏
  },
  // app顶部配置
  topBar: {
    title: {
      color: '#fff'
    },
    backButton: {
      color: '#fff'
    },
    background: {
      color: globalStyles.themeColor
    }
  },
  // app底部整体tabs的配置
  bottomTabs: {
    titleDisplayMode: 'alwaysShow'
  },
  // app底部的tab配置
  bottomTab: {
    fontSize: 12,
    selectedFontSize: 14,
    iconWidth: 32,
    iconHeight: 32,
    textColor: '#666',
    selectedTextColor: globalStyles.themeColor,
    fontWeight: 700
  }
})

应用中的每个屏幕组件都必须使用唯一的名称进行注册,Navigation.registerComponent()。

3、更改入口文件index.js

// /**
//  * @format
//  */

// import {AppRegistry} from 'react-native';
// import App from './App';
// import {name as appName} from './app.json';

// AppRegistry.registerComponent(appName, () => App);


/**
 * 安装react-native-navigation后需要修改入口文件如下:
 */
import { Navigation } from "react-native-navigation"
import {WelcomeRoot, MainRoot} from './src/navigation'
 
Navigation.events().registerAppLaunchedListener(() => {
  // 欢迎屏
  Navigation.setRoot(WelcomeRoot)
  // 主屏
  setTimeout(()=> {
    Navigation.setRoot(MainRoot)
  }, 2500)
})

程序启动时,使用Navigation.events().registerAppLaunchedListener()侦听事件并在收到该事件时,调用Navigation.setRoot(),设置应用程序的UI。

根(root)可以在应用程序的生命周期内多次更改。例如,如果应用要求用户登录,则通常使用基于堆栈(stack)的根,并在登录成功时转换为基于选项卡(Tabs )或侧边菜单(SideMenu )根。?

4、效果

???

?

?

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:23:00  更:2022-09-04 01:24:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 4:29:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码