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

关于RN自带的顶部导航栏以及底部导航栏目,请看我的另一篇博客,地址:
http://blog.csdn.net/ljfphp/article/details/77940284

一、背景

1、根据需求,要求点击列表进入详情页,每个页面的标题都不一样。我们都知道,详情页只有一个,如果按照RN自带的组件,则title是固定的,因此不符合需求。

2、RN自带组件的标题部分是歪的,不是很好看。而我们UI需要的是标题居中,,这部分没办法修改RN自带的标题部分居中,烦恼

3、我们需要的效果:

这部分是列表页,要求点击的时候,显示的标题要和列表的标题一致。

就像下面的:

类似于这种的。所以自己写一个导航栏就势在必行了。

二、导航栏目的代码

1、首先是设置RN自带的组件,隐藏掉顶部导航栏目

static navigationOptions = {tabBarVisible: false, // 隐藏底部导航栏header:null,  //隐藏顶部导航栏};

2、自己写一个导航栏的视图view

 /** 自定义的导航栏* */__daohang(){return(<View style={sscStyle.view_custom}><View style={sscStyle.view_custom_back}><Button  onPress={()=>{this.props.navigation.goBack();}}><Image
                  source={require('./img/jiantou.png')}style={{width:20,height:20,marginLeft:0,marginTop:15,}}></Image></Button></View><View style={sscStyle.view_custom_text_view}><Text style={sscStyle.view_custom_text_view_text}>{this.state.data.list1.device_name}</Text></View></View>);}

解释:
(1)首先是导航栏目的组成部分。后退的箭头+导航标题

(2)箭头部分需要用到goback()函数,来返回上一个页面。这里用的还是RN自带组件的方法。

(3)标题部分是根据服务器传过来的数据this.state.data.list1.device_name,然后展现出来。

3、样式部分代码

 /** 自定义导航栏,实现导航标题跟着设备不同而改变的效果* */view_custom:{width:gScreen.width,height:50,// borderWidth:1,// borderColor:'#f0f',flexDirection:'row',},/** 箭头部分* */view_custom_back:{width:50,height:40,// borderWidth:1,//borderColor:'#f00',marginLeft:15,},/** 文字部分* */view_custom_text_view:{width:200,height:40,// borderWidth:1,// borderColor:'#f00',marginLeft:(gScreen.width-200)/2-50-15,},view_custom_text_view_text:{fontSize:20,color:'#fff',textAlign:'center',lineHeight:40,},

如此即可实现我们的需求。

三、关于RN自带组件的标题不居中问题

这里有个小技巧,就是在导航栏目的右边加一个空按钮。RN的导航栏目标题不居中的原因是因为左边多了个箭头,所以标题只是相对于箭头右边的部分居中。既然如此,我们在右边加个空按钮即可。
大致代码如下:

类似于这边的右边按钮部分。大家自己加上试试,看效果如何。

end

react native 之自定义顶部导航栏,实现标题居中可控相关推荐

  1. 微信小程序 自定义顶部导航栏标题 navigationStyle

    微信小程序 自定义顶部导航栏标题 单页面自定义导航栏 修改需要自定义的页面,的页面配置.json文件 全部页面自定义导航 修改公共页面配置app.json 单页面自定义导航栏 修改需要自定义的页面,的 ...

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

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

  3. 小程序自定义顶部导航栏

    上篇博客自定义了一个底部导航栏,效果还可以,但是我在开发过程中又遇到了一个棘手的问题.就是在底部导航栏的第一个页面需要将页面沉浸到状态栏去,这就麻烦了,因为中间的容器页面无论第几个都是在外面的主界面里 ...

  4. 微信小程序实现自定义顶部导航栏(选项卡),固定导航栏和可滑动导航栏

    微信小程序实现自定义顶部导航栏(选项卡),固定导航栏和可滑动导航栏 固定导航栏 可滑动导航栏 顶部导航栏的需求实现: 顶部导航栏由列表渲染,通过tabclick点击事件改变activeIndex变量的 ...

  5. uniapp开发微信小程序自定义顶部导航栏

    自定义导航栏渐变色,先上效果 使用uniapp开发小程序,在不同界面,要去对页面进行修改顶部导航栏. 比如说要去定义导航栏的背景颜色,常规的去定义导航栏背景颜色 全局定义导航栏 "windo ...

  6. Android 开发:(十四)NavigationBar篇-自定义顶部导航栏

    本篇记录了navigation bar顶部导航栏的自定义方法,抛砖引玉,简单实现了常用的布局,在此基础上可添加较复杂的布局. 第一步:新建NavigationBar文件,继承与FrameLayout. ...

  7. 【小程序】自定义顶部导航栏(左上角返回等)

    思路: 明白一点,右上角的胶囊按钮是隐藏不了的,是固定在右上角的,也意味着自定义导航栏时候不用考虑它 先在需要自定义导航栏的A页面,配置"navigationStyle":&quo ...

  8. 原声微信小程序自定义顶部导航栏 . 自定义navigationBar。 (单页面设置)

    本文实例为大家分享了微信小程序自定义导航栏的具体代码,供大家参考,具体内容如下 实现自定义大致需要以下?步骤: 1.在页面.JSON文件进行相关配置,以便去掉原生 "navigationSt ...

  9. 微信小程序自定义顶部导航栏navigationBar

    自定义navigationBar怎么做? 去掉原生导航栏. 将需要自定义navigationBar页面的page.json的navigationBarTitleText去掉. 加上"navi ...

最新文章

  1. sql对应C#的类型
  2. MYSQL查看 table 表状态常用的命令
  3. 《银翼杀手2049》:活着不只为了“存在”
  4. [原]全桥移相(PSFB)原边电流突跌分析
  5. palindromic java_LeetCode(java)5. Longest Palindromic Substring
  6. win7安装python
  7. linux计算机网络一般需要配置哪几部分,计算机网络技术 知识及应用第4章Linux操作系统和常用服务器配置.ppt...
  8. matlab如何拟合方程,如何用MATLAB拟合曲线来求参数?
  9. mac电脑网游加速器哪个好用?网易uu网游加速器分享
  10. PLC控制系统接地要求
  11. [导入]陈冠希蛰伏35天后闪电复出 将与舒淇演爱情片
  12. Oracle数据库Clob类型Blob类型与String互转
  13. dbus 嵌入式linux,MeeGo操作系统DBus调试工具
  14. 关于实习和秋招的准备
  15. web of science 校外访问方法
  16. matlab 中实现读取图像上点坐标并在图片上标记点和将坐标显示出来
  17. Django 中 CHANNEL_LAYERS设置
  18. 计算机二级办公室软件应用,浙江省计算机二级办公室高级软件应用的真题
  19. DM368开发 -- 文件烧写
  20. 电力系统分析实验--短路计算

热门文章

  1. curl linux 数组参数_Linux系统调用原理
  2. 2019~2020年终总结
  3. pytorch 同步gpu
  4. Python Numba CPU下加速
  5. 局域网下两台电脑ping不通
  6. pytorch 索引
  7. YOLOv3 best_iou问题
  8. 自动化运维——一键安装MySQL
  9. Windows/Linux高精度计时器(C++)
  10. 电子科技学院计算机调剂,2020年电子科技大学电子科学技术研究院考研调剂信息...