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提交保留上次提交数据 初始化页面显 ...
随机推荐
- Python利用PyExecJS库执行JS函数
在Web渗透流程的暴力登录场景和爬虫抓取场景中,经常会遇到一些登录表单用DES之类的加密方式来加密参数,也就是说,你不搞定这些前端加密,你的编写的脚本是不可能Login成功的.针对这个问题,现在有 ...
- docker初体验:Docker部署SpringCloud项目eureka-server
Docker部署SpringCloud项目eureka-server 1 创建eureka-server工程 创建父工程cloud-demo,其pom.xml如下: <?xml version= ...
- HPS端的GPIO如何控制
该笔记主要记录HPS端的GPIO如何控制,包括控制LED和Key 1.GPIO地址映射 Peripheral Base Address 0xf000_0000 64M 2.HPS外设 (1)GPIO ...
- CSRF与auth模块
目录 一.模拟实现中间件的编程思想 (一)impotlib模块 (二)实现功能的配置使用 二.跨站请求伪造CSRF (一)由来 (二)form表单的CSRF (三)ajax中的CSRF (1)通过da ...
- Kubernetes 集群升级docker版本
Kubernetes 集群升级docker版本 原则:升级完一台正常后再接着升下一台. Work Node 一.迁移上的pod(保证业务,但期间会出现抖动) kubectl drain $NODE ...
- 【重大更新】AppWizard来了,emWin6.10版本来了
说明: 1.快圣诞节了,MDK和SEGGER都太生猛了,发布了大量软件更新,而且都是比较大的改进,待我周报再给大家分享. 2.不枉我这么多年对emWin的支持,官方也用心,终于带来AppWizard, ...
- .NET Core Razor Pages中ajax get和post的使用
ASP.NET Core Razor Pages Web项目大部分情况下使用继承与PageModel中的方法直接调用就可以(asp-page),但是有些时候需要使用ajax调用,更方便些.那么如何使用 ...
- JS--- part6课程介绍 & part5复习
part6 课程介绍 scroll系列:-----重点,每个属性是什么意思 封装scroll系列的相关的属性,固定导航栏案例---事件浏览器的滚动条事件--能够写出来 封装动画函数---缓动动画--- ...
- 微信小程序APP生命周期
小程序APP生命周期需要先从app.js这个文件开始,App() 必须在 app.js 中调用,必须调用且只能调用一次,app.js中定义了一些应用的生命周期函数 onLaunch----当小程序初始 ...
- JS---DOM---案例:模拟百度搜索框
模拟百度搜索框 我的思路整理: 1. 注册文本框抬起事件(onkeyup) 2. 处理函数: --->创建临时数组,循环遍历文本框键入的文字内容和keywords数组,用keyWords[i]. ...