ReactNative: 使用标签栏组件TabBarIOS组件

一、简介

标签栏Tab的作用对于应用程序那是不言而喻的,它是应用程序中除了导航栏组件外的又一个核心组件,使用它可以实现页面的切换。RN提供了一个TabBarIOS组件来完成页面的切换(视图或者路由),它代表整个标签栏,不过它需要搭配的它的一个附属组件TabBarIOS.Item,它代表每一个tabItem。TabBarIOS组件内部可以包含多个TabBarIOS.Item组件,而在每一个TabBarIOS.Item组件内部又必须包括容器视图组件显示页面。基本格式如下:

<TabBarIOS> //标签栏
      <TabBarIOS.Item>  //页面1的tab item
          <View></View> //页面1
      </TabBarIOS.Item>

      <TabBarIOS.Item>  //页面2的tab item
          <View></View> //页面2
      </TabBarIOS.Item>

      <TabBarIOS.Item>  //页面3的tab item
          <View></View> //页面3
      </TabBarIOS.Item>

      <TabBarIOS.Item>  //页面4的tab item
          <View></View> //页面4
      </TabBarIOS.Item>
</TabBarIOS>    

二、TabBarIOS

主要属性

//Tab栏的背景颜色
barTintColor

//Tab未选中的标签背景颜色
unselectedTintColor

//Tab选中的标签背景颜色
tintColor

//Tab未选中的item背景色
unselectedItemTintColor

//Tab栏是否半透明
translucent

//Tab的每一个item的位置
itemPositioning

三、TabBarIOS.Item

主要属性

//红色的提醒数字或者文字,一般用作消息提示
badge

//提示数字或者文字的背景色badgeColor

//Tab的自定义图标,如果不指定,默认显示系统图标systemIcon
icon

//点击事件,当某一个tab被选中时,需要改变该组件的selected={true}设置
onPress

//是否选中某一个tab,如果其值为true,则选中并显示子组件
selected

//选中状态的自定义图标,如果为空,默认会把图标变成蓝色
selectedIcon

//系统图标,会覆盖自定义图标和标题,其值为枚举类型,可选值包括:bookmarks、contacts、downloads、favorites、featured、history、more、most-recent、most-viewed、recents、search和top-rated
systemIcon

//是否采用原始图颜色渲染renderAsOriginal

//标题,它会出现在图标底部。当我们使用了系统图标时,将会忽略该标题
title

三、使用

TabBar.js【注意:在icon配置中使用scale:2,保证了图标不变形】

import React, { Component } from ‘react‘;
import {
    StyleSheet,
    View,
    TabBarIOS
} from ‘react-native‘;

export default class TabBar extends Component{

    constructor(props){
        super(props);
        this.state = {tabItemIndex:0}
    }

    render(){
        const {tabItemIndex} = this.state;
        return (
            <View style={styles.flex}>
                <TabBarIOS style={styles.size} tintColor={‘black‘} translucent={true}>
                    <TabBarIOS.Item
                        title={"首页"}
                        icon={{uri:"tab_home",scale:2}}
                        selectedIcon={{uri:"tab_home_click",scale:2}}
                        renderAsOriginal={true}
                        onPress={()=>{this.setState({tabItemIndex:0})}}
                        selected={tabItemIndex === 0}>
                        <View style={[styles.flex,styles.tab1]}/>
                    </TabBarIOS.Item>
                    <TabBarIOS.Item
                        title={"消息"}
                        icon={{uri:"tab_information",scale:2}}
                        selectedIcon={{uri:"tab_information_click",scale:2}}
                        renderAsOriginal={true}
                        onPress={()=>{this.setState({tabItemIndex:1})}}
                        selected={tabItemIndex === 1}>
                        <View style={[styles.flex,styles.tab2]}/>
                    </TabBarIOS.Item>
                    <TabBarIOS.Item
                        title={"我的"}
                        icon={{uri:"tab_mine",scale:2}}
                        selectedIcon={{uri:"tab_mine_click",scale:2}}
                        renderAsOriginal={true}
                        onPress={()=>{this.setState({tabItemIndex:2})}}
                        selected={tabItemIndex === 2}>
                        <View style={[styles.flex,styles.tab3]}/>
                    </TabBarIOS.Item>
                </TabBarIOS>
            </View>
        )
    }
}

const styles = StyleSheet.create({
    flex: {
        flex: 1,
    },
    size: {
        height: 49,
    },
    tab1: {
        marginBottom: 49,
        backgroundColor: ‘red‘
    },
    tab2: {
        marginBottom: 49,
        backgroundColor: ‘green‘
    },
    tab3: {
        marginBottom: 49,
        backgroundColor: ‘brown‘
    }
});

index.ios.js

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, { Component } from ‘react‘;
import TabBar from ‘./src/TabBar‘

import {
    AppRegistry,
    StyleSheet,
    View
} from ‘react-native‘;

export default class ReactNativeDemo extends Component {

    render() {
        return (
            <View style={styles.flex}>
                <TabBar/>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    flex: {
        flex: 1
    }
});

AppRegistry.registerComponent(‘ReactNativeDemo‘, () => ReactNativeDemo);

原文地址:https://www.cnblogs.com/XYQ-208910/p/12040371.html

时间: 2024-08-30 18:09:22

ReactNative: 使用标签栏组件TabBarIOS组件的相关文章

ReactNative: 使用选择器组件Picker组件

一.简介 本系列博客已经介绍过了日期选择器的使用,日期选择器是高度封装的组件,开发者可以选择最原始的选择器组件Picker组件进行定制,它是跨平台的组件.Picker组件需要配合Picker.Item组件一起使用.Picker.Item组件是Picker组件的子项,用来设置Picker组件值的.Picker.Item组件可以嵌套多个Picker.Item组件. 二.Picker组件API Picker组件提供的都是静态属性,分析每一个属性的作用如下所示: //选择器样式 style: picke

ReactNative: 使用滑块组件Slider组件

一.简介 滑块组件Slider组件是一个跨平台的组件,用户可以拖拽它的值来调整播放或浏览的进度,例如音乐.视频.电子书等等. 二.API 它的API如下所示: //滑块组件风格布局 style: ViewPropTypes.style //滑块的初始值. 该值应介于minimumValue和maximumValue之间,分别默认为0和1. 预设值为0. value: PropTypes.number //滑块的步长值. 该值应介于0到(maximumValue-minimumValue)之间.

ReactNative: 使用开关组件Switch组件

一.简介 开关组件就是0和1的互斥关系,0代表关闭,1代表打开.应用中很多时候会使用一个开关组件来控制某些功能是否启用或禁用.ReactNative中提供了Switch组件来实现开关功能. 二.API 它提供的属性不多,如下所示: //开关组件当前的值,默认为false value: PropTypes.bool //开关组件是否可交互 disabled: PropTypes.bool //开关组件值发生改变时调用 onValueChange: PropTypes.func //开关组件唯一标识

Delphi IdHttp组件+IdHttpServer组件实现文件下载服务

http://blog.csdn.net/xxkku521/article/details/16864759 Delphi IdHttp组件+IdHttpServer组件实现文件下载服务 2013-11-21 18:15 2624人阅读 评论(0) 收藏 举报  分类: DELPHI(10)  版权声明:本文为博主原创文章,未经博主允许不得转载. [delphi] view plain copy uses idhttp,IdHTTPServer; //idhttp组件提交下载请求 procedu

12 Django组件-form组件

知识预览 forms组件 forms组件 校验字段功能 针对一个实例:注册用户讲解. 模型:models.py class UserInfo(models.Model): name=models.CharField(max_length=32) pwd=models.CharField(max_length=32) email=models.EmailField() tel=models.CharField(max_length=32) 模板:register.html: <!DOCTYPE h

django第13天(auth组件,forms组件)

django第13天(auth组件,forms组件) auth组件 -auth组件 -auth是什么? -django内置的用户认证系统,可以快速的实现,登录,注销,修改密码.... -怎么用? -(1)先创建超级用户: -python3 manage.py createsuperuser -输入用户名,邮箱(可以不输入),密码,敲回车,这样就创建出一个超级用户 -也就是在auth_user这个表中插入了一条数据(密码是加密的,所以我不能手动插入) -(2)验证用户: -from django.

Django---FORM组件.FORM组件的字段,FORM组件校验流程,FORM组件的全局和局部钩子,FORM和Model的组合

Django---FORM组件.FORM组件的字段,FORM组件校验流程,FORM组件的全局和局部钩子,FORM和Model的组合 一丶FORM的介绍 1.生成页面可用的HTML标签 2.对用户提交的数据进行校验 3.保留上次输入内容 二丶使用form组件实现注册功能 from django import forms # 导入forms组件 # 按照Django form组件的要求自己写一个类 class RegForm(forms.Form): # 继承Form name = forms.Ch

v-once指令、v-cloak指令、条件指令家族、原义指令、循环指令、todolist案例、实例成员-符号、实例成员-计算属性、实例成员-属性监听、监听的案例、局部组件、全局组件、组件交互(父传子、子传父)

v-once指令: v-once:单独使用,限制的标签内容一旦赋值,便不可被动更改(如果是输入框,可以主动修改) <div id="app"> <input type="text" v-model="msg"> <!-- 一旦赋值,只可主动更改 --> <input type="text" v-model="msg" v-once> <p>{{ m

django的RBAC认证z;自定义auth_user表;认证组件权限组件源码分析;认证组件;权限组件

一 RBAC 1.RBAC:全称(Role-Based Access Control):指的是基于用户权限访问控制的认证. 2.Django框架采用的是RBAC认证规则,RBAC认证规则通常会分为:三表规则,五表规则:Django采用的是六表规则. # 三表:用户表.角色表.权限表# 五表:用户表.角色表.权限表.用户角色关系表.角色权限关系表# 六表:用户表.角色表.权限表.用户角色关系表.角色权限关系表.用户权限关系表 3.在Django中六表之间是都是多对多的关系,可通过下面字段跨表访问