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提交保留上次提交数据 初始化页面显 ...
随机推荐
- Python3 文件处理
目录 文件操作的流程 文件的三种打开模式 读取: rt read_text 针对文本内容只读 清空写入: wt write_text 针对文本内容只写 追加写入: at append_text 针对文 ...
- docker-网络管理-桥接网络
一.配置桥接网络 需求:为了使本地网络中的机器和Docker容器更方便的通信,我们经常会有将Docker容器配置到和主机同一网段的需求.这个需求其实很容易实现,我们只要将Docker容器和宿主机的 ...
- 9月腾讯、百度、阿里高频的29道SSM框架面试题解析
一.Spring面试题 1.Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成. 两大核心:1.IOC/DI(控制反转/依赖注入) ...
- 你不会还在用这8个错误的SQL写法吧?
1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引 ...
- python学习-加载配置文件
import configparser # 实例化cp = configparser.ConfigParser() # 加载配置文件cp.read("my_config.conf" ...
- WMB Commands
Check ports: mqsiprofile //Run this first mqsireportproperties MB8BROKER -e AddressSampleProvider -o ...
- Spring Cloud第九篇 | 分布式服务跟踪Sleuth
本文是Spring Cloud专栏的第九篇文章,了解前八篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cl ...
- 原创 Hive left join 技巧总结
根据工作中经验总结出来 left join 常用的 使用注意点: A Left join B on A.id = B.id 第一种情况: 如果 A 表 ...
- 浅析 Java 与 C++ 的垃圾回收机制
Java老师在期末复习大纲上出了一道关于JVM垃圾回收机制的题目,想要我们简述一下JVM垃圾回收机制,与老师交流后,大概老师是希望通过与其他语言在垃圾回收对比,介绍一下Java在这方面的特点和 ...
- 2、MVC+IOC容器+ORM结合
1.常规写法,难道我们每次都new一个服务,如下面的UserService和CompanyService然后调用服务的Find方法去操作,为什么我们不让UserService和CompanyServi ...