zoukankan      html  css  js  c++  java
  • [RN] React Native 下实现底部标签(支持滑动切换)

    上一篇文章

    [RN] React Native 下实现底部标签(不支持滑动切换)

    总结了不支持滑动切换的方法,此篇文章总结出 支持滑动 的方法

    准备工作之类的,跟上文类似,大家可点击上文查看相关内容。

    不同点在于 /src/App.js 下

    主要使用 react-navigation 下的 createMaterialTopTabNavigator

    所以也需要先安装 react-navigation

    1)依赖版本如下:

    "react-navigation": "^3.9.1",

    2)代码如下:

    import React from 'react';
    import {Image} from 'react-native';
    import {createAppContainer, createMaterialTopTabNavigator} from 'react-navigation';
    
    //展示的页面
    import Home from './Home';
    import Contact from './Contact';
    import Discover from './Discover';
    import Mine from './Mine';
    
    //Tab
    const TabNavigator = createMaterialTopTabNavigator({
        Home: {
            screen: Home,//当前选项卡加载的页面
            navigationOptions: {
                tabBarLabel: '新闻',
                tabBarIcon: ({tintColor, focused}) => (
                    <Image
                        source={focused ? require('./main_tab_home_icon_pressed.png') : require('./main_tab_home_icon.png')}
                        style={[{height: 24,  24}]}
                    />
                ),
            },
        },
        Contact: {
            screen: Contact,
            navigationOptions: {
                tabBarLabel: '视频',
                tabBarIcon: ({tintColor, focused}) => (
                    <Image
                        source={focused ? require('./main_tab_video_icon_pressed.png') : require('./main_tab_video_icon.png')}
                        style={[{height: 24,  24}]}
                    />
                ),
            },
        },
        Discover: {
            screen: Discover,
            navigationOptions: {
                tabBarLabel: '图片',
                tabBarIcon: ({tintColor, focused}) => (
                    <Image
                        source={focused ? require('./main_tab_image_icon_pressed.png') : require('./main_tab_image_icon.png')}
                        style={[{height: 24,  24}]}/>
                ),
            }
        },
        Mine: {
            screen: Mine,
            navigationOptions: {
                tabBarLabel: '我的',
                tabBarIcon: ({tintColor, focused}) => (
                    <Image
                        source={focused ? require('./main_tab_user_icon_pressed.png') : require('./main_tab_user_icon.png')}
                        style={[{height: 24,  24}]}/>
                ),
            }
        },
    }, {
        swipeEnabled: true,
        animationEnabled: true,
        tabBarPosition: "bottom", //如果在顶部,就是 top
        tabBarOptions: {
            activeTintColor: '#45C018',
            inactiveTintColor: '#111111',
            showIcon: true, // 是否显示图标, 默认为false
            showLabel: true, // 是否显示label
            labelStyle: {
                fontSize: 12,
            },
            style: {
                backgroundColor: '#fff',
                borderTopWidth: 0.5,
                borderTopColor: 'grey',
            },
            indicatorStyle: {
                height: 0, // 不显示indicator
            },
        },
    
    });
    
    export default createAppContainer(TabNavigator);

    二、如果要将将标签放在顶部,只需要修改 abBarPosition 的值为 top,就可以实现Android下对应TabLayout 顶部效果

    abBarPosition: "top", //如果在顶部,就是 top


    三、更多可参考官网文档

    https://reactnavigation.org/docs/zh-Hans/getting-started.html

    本博客地址: wukong1688

    本文原文地址:https://www.cnblogs.com/wukong1688/p/10820183.html

    转载请注明出处!谢谢~~

  • 相关阅读:
    软件测试理论基础
    使用Pycharm官方统计代码行插件统计代码总行数
    Jmeter的配置文件解析
    python异常整理
    python2与python3的区别
    tomcat的server.xml配置
    异常:Error response from daemon: conflict: unable to delete 6fa48e047721 (cannot be forced)
    前端 -- 定位和z-index
    前端 -- background
    前端 -- 超链接导航栏案例
  • 原文地址:https://www.cnblogs.com/wukong1688/p/10820183.html
Copyright © 2011-2022 走看看