1.自定义导航栏样式

步骤一:从效果图中可以看出,导航栏的样式都差不多,因为我们前面已经设置了 Navigator ,这边的话我们还需要自定义 Navigator 的样式,可以看到所有的 Navigator 样式都是相近的,所以这边我们就抽出来,让所有的 Navigator 共用一个组件就可以了。

步骤二:那么首先我们在 main 文件夹中创建 GDCommunalNavBar 文件并初始化一下里面基本的内容

步骤三:接着,我们来看下首页的导航栏,首页导航栏分别有左中右三个按钮,左边为半小时热门,中间为点击下拉显示支持筛选的平台的列表,右边则是商品搜索,通常 Navigator 也只有这3个组件,为了使用者高度地自定义,这边我们只在 currencyNavBar 中设置3个组件的布局,然后提供接口,获取外部传入的值,并在内部判断是否需要创建相应的组件。

GDCommunalNavBar.js

/*** 自定义导航栏*/
import React, { Component, PropTypes } from 'react';
import {StyleSheet,Text,View,Dimensions,Platform,
} from 'react-native';// 获取屏幕宽高
const {width, height} = Dimensions.get('window');export default class GDCommunalNavBar extends Component {// 创建成员属性 ES6统一用static管理static propTypes = {leftItem:PropTypes.func,  // 外部传入方法,内部接收titleItem:PropTypes.func,rightItem:PropTypes.func,};// 左边renderLeftItem() {// 判断是否传入值if (this.props.leftItem === undefined) return;// 有值,调用方法,进行初始化return this.props.leftItem();}// 中间renderTitleItem() {if (this.props.titleItem === undefined) return;return this.props.titleItem();}// 右边renderRightItem() {if (this.props.rightItem === undefined) return;return this.props.rightItem();}render() {return (<View style={styles.container}>{/* 左边 */}<View>{this.renderLeftItem()}</View>{/* 中间 */}<View>{this.renderTitleItem()}</View>{/* 右边 */}<View>{this.renderRightItem()}</View></View>);}
}const styles = StyleSheet.create({container: {width:width,height:Platform.OS === 'ios' ? 64 : 44,backgroundColor:'white',flexDirection:'row', // 设置主轴的方向justifyContent:'space-between', // 设置主轴的对齐方式alignItems:'center', // 设置侧轴内容居中borderBottomWidth:0.5,borderBottomColor:'gray',paddingTop:Platform.OS === 'ios' ? 15 : 0,},
});

2.引用 自定义导航栏组件

GDHome.js

/*** 首页*/
import React, { Component } from 'react';
import {StyleSheet,Text,View,TouchableOpacity,Image,
} from 'react-native';// 引入自定义导航栏组件
import CommunalNavBar from '../main/GDCommunalNavBar';export default class GDHome extends Component {// 返回左边按钮renderLeftItem() {// 将组件返回出去return(<TouchableOpacity><Image source={{uri:'hot_icon_20x20'}} style={styles.navbarLeftItemStyle} /></TouchableOpacity>);}// 返回中间按钮renderTitleItem() {return(<TouchableOpacity><Image source={{uri:'navtitle_home_down_66x20'}} style={styles.navbarTitleItemStyle} /></TouchableOpacity>);}// 返回右边按钮renderRightItem() {return(<TouchableOpacity><Image source={{uri:'search_icon_20x20'}} style={styles.navbarRightItemStyle} /></TouchableOpacity>);}render() {return (<View style={styles.container}>{/* 导航栏样式 */}<CommunalNavBarleftItem = {() => this.renderLeftItem()}titleItem = {() => this.renderTitleItem()}rightItem = {() => this.renderRightItem()}/></View>);}
}const styles = StyleSheet.create({container: {flex: 1,alignItems: 'center',backgroundColor: '#F5FCFF',},navbarLeftItemStyle: {width:20,height:20,marginLeft:15,},navbarTitleItemStyle: {width:66,height:20,},navbarRightItemStyle: {width:20,height:20,marginRight:15,},
});

3.效果图

.

React-Native 之 GD (二)自定义共用导航栏样式相关推荐

  1. 微信小程序中自定义背景导航栏透明背景设置

    首先确定好自己要在哪个页面中使用自定义头部导航栏样式 在该页面中找到xxx.json文件中添加上 "navigationStyle":''custom" 这样在页面中头部 ...

  2. react native 之自定义顶部导航栏,实现标题居中可控

    本来一直用的都是RN自带的组件react-navigation,但是后面需求有变,需要顶部导航栏目的标题可以自己控制,同一页面的标题根据数据库查出来的内容变化.因此自定义了一个导航栏目,实现需求. 关 ...

  3. 如何在React Native中写一个自定义模块

    前言 在 React Native 项目中可以看到 node_modules 文件夹,这是存放 node 模块的地方,Node.js 的包管理器 npm 是全球最大的开源库生态系统.提到npm,一般指 ...

  4. 如何在 React Native 中写一个自定义模块

    前言 在 React Native 项目中可以看到 node_modules 文件夹,这是存放 node 模块的地方,Node.js 的包管理器 npm 是全球最大的开源库生态系统.提到npm,一般指 ...

  5. 小程序自定义头部导航栏(“navigationStyle“: “custom“),自定义tabBar

    一.自定义顶部导航 1.在某些时候,不想要自带的顶部导航栏,需要自己定义,这时可以将自定义的导航栏做成一个组件,然后做一下初始配置,在每个页面引用,初始化,即可得到一个自定义的顶部导航栏: 2.代码部 ...

  6. 使用 CSS 构建自定义粘性导航栏

    导航栏可能是让用户轻松浏览您的网站而不会迷路的最佳方式. 人们通常将导航栏放在页面的最顶部,但如果它与您的设计相得益彰,您也可以在网页的任一侧放置导航栏.导航栏可以是导航项目的水平列表,也可以是小屏幕 ...

  7. uniapp实战项目 (仿知识星球App) - - 自定义顶部导航栏和登录弹窗组件

    实战项目名称:仿知识星球App 技术栈:前端 => uni-app ( 后端:Node.js + Mysql + Apollo + Graphql ) 已实现功能:微信登录,创建星球,内容管理, ...

  8. 微信小程序之导航栏样式修改、自定义导航栏及封装

    在微信小程序中我们会经常看到不同字样的顶部标题,这样的样式有的是一样的,而有的却又是不同的导航栏,这是怎么回事呢,在这里我们就探讨一下.(微信小程序json文件不能有注释,复制过去的时候有注释记得自行 ...

  9. 微信小程序自定义navigation-bar导航栏(自适应安卓苹果)

    最近在写商城,中途遇到了需要自定义修改导航栏的操作,大概是如下图接过样子的,于是想手写一份,但我发现右上角的分享按钮在不同设备离顶部的距离是不一样的,于是找了下官方划水员写的文档(点这里查看),(⊙o ...

最新文章

  1. Scrum立会报告+燃尽图(十月二十一日总第十二次)
  2. python中的定制类(转载)
  3. pandas重命名变量名
  4. 简单计算机病毒黑屏,教大家一个黑屏小程序
  5. oracle最佳环境,创建最适合的Oracle运行环境
  6. UOJ351 新年的叶子
  7. Linux安装nginx详细步骤
  8. javascript DOM对象转jquery对象
  9. 常用自动化测试工具介绍(支持B/S、C/S)
  10. 邮局用计算机对信件进行自动分拣,计算机组成结构习题集
  11. 物业计算机管理系统论文,物业小区管理系统 计算机专业毕业论文.doc
  12. 【云速建站】网站的基本设置
  13. 弘辽科技:拼多多里有top是什么意思?如何提高排名?
  14. Android获取汉字首字母工具类
  15. 20145212 罗天晨 网络欺诈技术防范
  16. ORACLE查询基本语句
  17. 文字格斗游戏2.0(随机数值)
  18. SNAT和DNAT原理及配置方法
  19. [N1BOOK PARTofPWN] ROP本地
  20. 彭于晏简单网页制作(HTML和css)

热门文章

  1. HTC打算一条道走到黑,开始资助「脑后插管操作」
  2. 华人开发世界最小电池,直径细如灰尘,可集成在芯片上供电10小时
  3. 谷歌翻译大型翻车现场:请服用“反坦克导弹”来缓解疼痛,UCLA:医生们要注意了...
  4. 无惧隐私泄露,企业修炼“看不见的数据圣手”
  5. 英特尔新CEO的「第一把火」:火速返聘退休3年的“酷睿i7之父”
  6. 微软AI要参加IMO竞赛!小目标:数学金牌
  7. 英伟达公开课 | 如何突破Decoder性能瓶颈?揭秘FasterTransformer2.0的原理与应用,已开源...
  8. GitHub年度报告:Python首次击败Java,中国成第二大开源贡献国
  9. 全球首部AI交响变奏曲问世,AI技术应用再拓边界
  10. 图森无人车官宣D轮2.15亿美元融资,成卡车货运估值No.1