import { createBottomTabNavigator } from ‘react-navigation’
createBottomTabNavigator 创建底部切换的tab>

完整代码 https://github.com/withwz/RN-boilerplate/tree/master/App/Containers/ListViewTaste/FooterNav
配置看程序和注释

效果

image.png

程序目录结构

image.png

// footer.js

  1. /**
  2. *
  3. * @see https://blog.csdn.net/zcmain/article/details/89019747
  4. *
  5. */
  6. import React from 'react'
  7. import { Image } from 'react-native';
  8. import { createAppContainer, createBottomTabNavigator } from 'react-navigation'
  9. import Page1 from '../pages/Page1'
  10. import Page2 from '../pages/Page2'
  11. import Page3 from '../pages/Page3'
  12. /**
  13. * 底部标签导航
  14. */
  15. const bottomNavigator = createBottomTabNavigator(
  16. /**
  17. * RouteConfigs
  18. */
  19. {
  20. //路由页面1
  21. bottomPage1: {
  22. screen: Page1,
  23. navigationOptions: {
  24. tabBarLabel: 'pageone',
  25. tabBarIcon: ({ focused }) => (
  26. <Image
  27. style={{ width: 22, height: 22 }}
  28. source={focused
  29. ? require('../../../../Assets/bottomFooter/home.png')
  30. : require('../../../../Assets/bottomFooter/home-green.png')
  31. }>
  32. </Image>
  33. ),
  34. }
  35. },
  36. //路由页面2
  37. bottomPage2: {
  38. screen: Page2,
  39. navigationOptions: {
  40. tabBarLabel: 'pagetwo',
  41. tabBarIcon: ({ focused }) => (
  42. <Image
  43. style={{ width: 22, height: 22 }}
  44. source={focused
  45. ? require('../../../../Assets/bottomFooter/type.png')
  46. : require('../../../../Assets/bottomFooter/type-green.png')
  47. }>
  48. </Image>
  49. ),
  50. }
  51. },
  52. //路由页面3
  53. bottomPage3: {
  54. screen: Page3,
  55. navigationOptions: {
  56. tabBarLabel: 'pagethree',
  57. tabBarIcon: ({ focused }) => (
  58. <Image
  59. style={{ width: 22, height: 22 }}
  60. source={focused
  61. ? require('../../../../Assets/bottomFooter/my.png')
  62. : require('../../../../Assets/bottomFooter/my-green.png')
  63. }>
  64. </Image>
  65. ),
  66. }
  67. },
  68. },
  69. /**
  70. * BottomTabNavigatorConfig
  71. */
  72. {
  73. // andorid按下返回键将返回initalRouteName,如果设置非initalRouteName则直接结束标签导航
  74. backBehavior: 'none',
  75. // 设置首次加载的页面默认为RouteConfig中第一个(指定的必须为Routeonfig中定义的路由页面)
  76. //initialRouteName: 'bottomPage3',
  77. // 定义tab顺序的routeNames数组
  78. //order: ['bottomPage1', 'bottomPage2', 'bottomPage3'],
  79. //导航栏选项
  80. tabBarOptions: {
  81. //设置是否显示tab上图标
  82. showIcon: true,
  83. //设置tab激活时文字和图标(前提是tabBarIcon的style设置tintColor)颜色
  84. activeTintColor: '#fd742f',
  85. //设置tab未激活文字和图标(前提是tabBarIcon的style设置tintColor)颜色
  86. inactiveTintColor: '#a6a1aa',
  87. //设置tab激活时候背景颜色
  88. activeBackgroundColor: '#e0dce0',
  89. //设置整个tabbar的样式(背景颜色、高等( height: 55))
  90. style: { backgroundColor: '#f5f4f9', height: 55 },
  91. //设置tab上文字样式(可设置字体大小等、内边距等)
  92. labelStyle: { fontSize: 16 },
  93. // 设置单个tab样式
  94. //tabStyle:{backgroundColor:'#9524d3',},
  95. // 设置是否显示tab文字
  96. //showLabel: true,
  97. // 设置tab未激活时候背景颜色
  98. //inactiveBackgroundColor:'#a4d9ff',
  99. },
  100. });
  101. const bottomAppContainer = createAppContainer(bottomNavigator);
  102. export default bottomAppContainer;

// route.js

import {
  createStackNavigator,
  createAppContainer,
} from 'react-navigation';

// import Welcome from '../WelcomeComponent'
// import TopNavigator from './TopNavigatorComponent'
import BottomNavigator from './footer'
/**
* 栈式导航
*/
const stackNavigator = createStackNavigator(
  //除了底部footer的配置还可以指定要加载的RN组件
  {
      // welcomePage: {
      //     screen: Welcome,
      // },
      // topNavigatorPage: {
      //     screen: TopNavigator,
      //     navigationOptions: () => ({
      //         header: null,
      //     })
      // },
      bottomNavigatorPage: {
          screen: BottomNavigator,
          navigationOptions: ({}) => ({
              header: null,
          })
      }
  }
);
const appStackNavigator = createAppContainer(stackNavigator);
export default appStackNavigator;

参考

https://blog.csdn.net/zcmain/article/details/89019747