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);


ReactNative: 使用标签栏组件TabBarIOS组件的更多相关文章
- ReactNative Android之原生UI组件动态addView不显示问题解决
ReactNative Android之原生UI组件动态addView不显示问题解决 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com ...
- ReactNative: 使用弹出框组件ActionSheetIOS组件
一.简介 在上一篇文章中,详细介绍了对话框组件,除此之外,React-Native系统还给开发者提供了一个弹框框组件ActionSheetIOS组件,它的弹出方式与对框框不同,它是从底部弹出,与iOS ...
- ReactNative: 使用滚动视图ScrollView组件
一.简介 当页面内容的非常多时,即使换行后仍然无法充分显示,此时最好的解决办法就是让页面可以滚动显示.在React-Native中,提供了可供滚动的视图组件ScrollView组件.它的属性和方法以及 ...
- ReactNative: 使用Touchable触摸类组件
一.简介 在应用程序中,最灵魂的功能就是交互.通过给应用程序的组件添加事件来实现交互,进而提高用户体验.然而,ReactNative并不能像Web开发那样可以给大多数的标签元素绑定click事件,例如 ...
- Vue.js学习 Item11 – 组件与组件间的通信
什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有 ...
- Vue中父子组件通讯——组件todolist
一.todolist功能开发 <div id="root"> <div> <input type="text" v-model=& ...
- $Django Rest Framework-认证组件,权限组件 知识点回顾choices,on_delete
一 小知识点回顾 #orm class UserInfo (models.Model): id = models.AutoField (primary_key=True) name = models. ...
- Vuejs——(12)组件——动态组件
版权声明:出处http://blog.csdn.net/qq20004604 目录(?)[+] 本篇资料来于官方文档: http://cn.vuejs.org/guide/components ...
- python 全栈开发,Day78(Django组件-forms组件)
一.Django组件-forms组件 forms组件 django中的Form组件有以下几个功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显 ...
随机推荐
- Day 08 作业
有如下值集合 [11, 22, 33, 44, 55, 66, 77, 88, 99, 90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中 ...
- 关于JAVA的Random类的冷知识(转自菜鸟V)
JAVA的Random类(转) Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基 ...
- CSS | 自适应两栏布局方法
html代码: <div class="main"> <div class="left" style="background: #0 ...
- 《Java知识应用》Java加密方式(MD5)详解
1. 应用 使用MD5加密 因为:因为MD5的不可逆性,也可以保证你的key 是安全的,黑客无法通过原文和密文知晓你的key. 案例: import java.math.BigInteger; imp ...
- Wonder暂停开发,开始写书
公告 大家好,我们决定暂时停止开发Wonder,但会继续维护当前的Wonder版本(如继续维护官网.在线编辑器.QQ群等). 我们当前的主要任务是 写书:基于Wonder 1.0版本的开发经验,写一本 ...
- 4、看源码MVC Controller如何调用Action
Controller继承ControllrBase,ControllerBase继承IController,而IController里只有一个Execute方法 1.ControllrBase里的Ex ...
- MySQL基础-存储过程
存储过程 定义:将一批为了完成特定功能的SQL语句集,根据传入的参数(也可没有),调用,完成单个sql语句更复杂的功能 存储过程思想很简单,就是SQL语句层面上的代码封装和重用 优点:1) 可封装,并 ...
- flask项目部署到生产环境的方案
背景 使用Python+flask编写的一个小项目,在本地开发完毕后,需要部署到测试服务器上,这时候犯难了,因为之前没部署过这块东西,所以各种百度,总算是部署成功了,也对这个项目进行了jenkins持 ...
- 【编码】彻底弄懂ASCII、Unicode、UTF-8之间的关系
计算机中的所有字符,说到底都是用二进制的0.1的排列组合来表示的,因此就需要有一个规范,来枚举规定每个字符对应哪个0.1的排列组合,这样的规范就是字符集. ASCII 全称是“美国信息交换标准码”(A ...
- WebRTC Android版本编译
本文简单介绍如何在Ubuntu18.04 上,编译WebRTC Android版本. 安装工具 需要用到depot_tools工具来下载webrtc源码. 安装 depot_tools git 命令获 ...