React Navigation 导航栏样式调整+底部角标消息提示

五一佳节匆匆而过,有人选择在外面看人山人海,有人选择宅在家中度过五一,也有人依然坚守在第一线,致敬!
这是坚持学习react-native的第二篇文章,可能会迟到,但是绝不会缺席,这篇要涉及到的是react-navigation,也是rn社区主推的一个导航库。

网上关于react-navigation的基本使用也是一抓一大把,这里对于它的使用不做过多介绍,主要记录使用过程中的其他问题。

因为android 和iOS 手机的不同,导航栏的显示也不太一样,而这篇文章会尽量的配置属性,让两端的导航栏样式、页面跳转的动画保持一致,同时还会介绍底部导航栏添加角标的方法。

这里使用的是3.9.1版本,网上好多文章是2.x版本的,用法基本大同小异。

android 导航栏标题居中适配

默认情况下,iOS的标题居中显示,而android的则不!!!
16a81d27b8295397?w=838&h=158&f=png&s=5622

解决createStackNavigatordefaultNavigationOptions属性里配置textAlignflex

const AppStackNavigator = createStackNavigator({HomeScreen: {screen: HomeScreen},RainScreen: {screen: RainScreen}
},{defaultNavigationOptions:{...headerTitleStyle: { ...textAlign: "center", //用于android 机型标题居中显示flex:1}}
})

:android机型标题默认不居中,textAlignflex的属性配置用于android机型标题居中显示。
在这种情况下,如果配置了headerLeft或者headerRight 属性,会出现标题偏移的现象。
16a81c0a99da9cfa?w=848&h=160&f=png&s=11239
直接在defaultNavigationOptions里配置空view的headerLeftheaderRight

    defaultNavigationOptions:{...headerTitleStyle: {...textAlign: "center", //用于android 机型标题居中显示flex:1,},headerRight: <View/>,headerLeft: <View/>}

这时候标题居中,同时可以在各自的页面里面去重写headerLeft的样式。

android 导航栏去除阴影样式

android的导航栏还有阴影的样式,添加elevation 设置阴影的偏移量

defaultNavigationOptions:{headerStyle:{backgroundColor:"#fff",elevation:0.5},...
}

16a81c87013f3353?w=842&h=158&f=png&s=11143
至此的导航栏的效果跟iOS基本保持一致。

android 页面跳转动画,自右向左打开

默认的android页面跳转是自下而上打开页面,而要与iOS的保持一致的自右向左,配置transitionConfig属性。

const AppStackNavigator = createStackNavigator({HomeScreen: {screen: HomeScreen},...
},{defaultNavigationOptions:{...},transitionConfig: () => ({screenInterpolator: (sceneProps) => {return StackViewStyleInterpolator.forHorizontal(sceneProps)},}),
})

底部导航添加消息角标

有时候我们会遇到这样的需求,在底部导航处添加消息的角标,提醒用户阅读的。
16a8b416246b5623?w=668&h=102&f=png&s=7855
tabBarIcon的属性里直接添加图标显示的,这里的msg变量数值是全局的,只做演示使用,实际项目里可以根据接口返回数据,可以搭配mobx 一起使用。

const rootTab = createBottomTabNavigator({...info: {screen: InfoStack,navigationOptions: {tabBarLabel: "消息",tabBarIcon: ({focused, tintColor}) => {let icon = focused ?require('../resources/img/mine_icon_message_selected.png') :require('../resources/img/mine_icon_message_default.png');return <View>{msg > 0 ?<View style={{width:12,height:12,justifyContent:"center",position: 'absolute',zIndex: 9,backgroundColor: "#FB3768",borderRadius:6,right:0,top:-2,}}><Text style={[{fontSize:10, color:"#fff", textAlign:"center",}]}>{msg}</Text></View> : null}<Image source={icon} style={{width: 34, height: 26}}/></View>}}}
},{...defaultNavigationOptions: ({navigation, screenProps}) => ({tabBarOnPress: (obj) => {//点击的时候清除消息const {routeName} = obj.navigation.state;if (routeName === "info") {msg = 0}obj.navigation.navigate(obj.navigation.state.key)}})
})

以上几点是在react-navigation的使用过程中遇到的问题以及解决方法,相关代码已经传到了github上https://github.com/taixiang/reactNativeDemo,仅供参考,如果有更好的方式 欢迎一起学习研究。

欢迎关注我的个人博客:https://www.manjiexiang.cn/

更多精彩欢迎关注微信号:春风十里不如认识你
一起学习,一起进步,欢迎上车,有问题随时联系,一起解决!!!

1652cd77eaebeb98?w=900&h=540&f=jpeg&s=64949

转载于:https://www.cnblogs.com/taixiang/p/10822342.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

反馈(Feedback)

说明&#xff1a;文章内容来源于课程视频和课程ppt。我只学习了课程没有做习题。文章不是翻译&#xff0c;是我对课程的理解。  终于到了第四部分了。之前提到过的&#xff0c;一个文本检索系统分词索引打分反馈。前面三部分都已经在前面的文档中介绍了。现在看反馈。反馈是根…

【数据结构与算法】堆

一&#xff1a;如何理解“堆” 1&#xff0c;堆是一个完全二叉树&#xff1b; 完全二叉树要求除了最后一层&#xff0c;其他层的节点都是满的&#xff0c;最后一层的节点都靠左排列。 2&#xff0c;堆中每个节点都必须大于等于&#xff08;或小于等于&#xff09;其子树中每个…

第五十三期:资深技术Leader肺腑忠告:如何成为技术大牛?

这篇文章&#xff0c;对于每一个想成为技术大牛的人来说都值得仔细阅读好几遍。 作者&#xff1a;曹乐来源&#xff1a;再成长一次 图片来自 Pexels 双生说&#xff1a;曹乐是典型学霸&#xff0c;清华本硕&#xff0c;多年互联网大厂研发经验&#xff0c;所以“资深”。我刚…

互联网搜索引擎

说明&#xff1a;文章内容来源于课程视频和课程ppt。我只学习了课程没有做习题。文章不是翻译&#xff0c;是我对课程的理解。 1 挑战 互联网搜索引擎与一般搜索引擎的区别主要在以下问题。  第一是数据量(scalability)。互联网搜索需要处理的数据量大&#xff0c;如何保证能…

第五十四期:Libra盟友纷纷“跳船”,联盟链还有戏吗?

曾经被诺贝尔奖得主斯蒂格利茨评价为“傻子才信”的Facebook数字加密货币项目Libra&#xff0c;自从出世开始就负面不断。最近在其首届理事会议前夕&#xff0c;PayPal、Visa、万事达、Stripe和eBay等全球型金融巨头“盟友”的相继退出&#xff0c;更使其遭遇了不少“看空”。 …

python time模块

时间戳、结构化时间、字符串时间 import time#时间戳 &#xff0c;大多时候用于计算 #从1970年0点0分0秒开始计算的秒数 print(time.time())#结构化时间------当地时间&#xff08;东8区&#xff09; #返回一个时间对象 print(time.localtime())#time.localtime()中默认参数为…

第五十五期:区块链将在2020年实现的重大改变

科技界的每家公司都已经拥有区块链战略。如果他们现在没有&#xff0c;他们就有可能错过了这个时代的一个机会。在过去几年中&#xff0c;许多企业已经对整体采用区块链技术的好处和相关风险进行了估算&#xff0c;分析和讨论。 科技界的每家公司都已经拥有区块链战略。如果他们…

为什么机器学习算法要与人类水平比较

原因 1 近年来机器学习的效果越来越好&#xff0c;能够和人类的相应能力做比较。 2 设计和构建机器学习系统&#xff0c;这个工作流程很高效。 因为种种原因&#xff0c;ML或者人都不可能超过Bayes Optimal Error 贝叶斯最优误差&#xff0c;ML随着时间推移会越来越接近贝…

第二十九期:运维之三大监控对比

Zabbix核心组件主要是Agent和Server&#xff0c;其中Agent主要负责采集数据并通过主动或者被动的方式采集数据发送到Server/Proxy&#xff0c;除此之外&#xff0c;为了扩展监控项&#xff0c;Agent还支持执行自定义脚本。 作者&#xff1a;艺术生的运维路来源&#xff1a;今日…

[Leetcode][第459题][JAVA][重复的字符串][子串][匹配]

【问题描述】[中等] 【解答思路】 1. 枚举 找出能整除的子串长度&#xff0c;再用substring遍历匹配即可 时间复杂度&#xff1a;O(N^2) 空间复杂度&#xff1a;O(1) class Solution {public boolean repeatedSubstringPattern(String s) {int len s.length();for(int i 1…

第五十六期:百度CTO王海峰CNCC2019演讲:深度学习平台支撑产业智能化

百度CTO王海峰在会上发表题为《深度学习平台支撑产业智能化》的演讲&#xff0c;分享了百度关于深度学习技术推动人工智能发展及产业化应用的思考&#xff0c;并深度解读百度飞桨深度学习平台的优势&#xff0c;以及与百度智能云结合助力产业智能化的成果。 作者&#xff1a;佚…

【STM32】IIC的基本原理(实例:普通IO口模拟IIC时序读取24C02)(转载)

版权声明&#xff1a;本文为博主原创文章&#xff0c;允许转载&#xff0c;但希望标注转载来源。 https://blog.csdn.net/qq_38410730/article/details/80312357IIC的基本介绍 IIC的简介 IIC&#xff08;Inter&#xff0d;Integrated Circuit&#xff09;总线是一种由PHILIPS公…

【数据结构与算法】广度优先遍历(BFS) 深度优先遍历(DFS)

一、 搜索算法 深度优先搜索和广度优先搜索是最暴力的图的搜索算法。算法的目标是&#xff0c;给定一张图&#xff0c;一对初始和终止节点&#xff0c;找到两节点之间的节点路径。&#xff08;代码均是找到两个节点之间的路径&#xff09; 广度优先搜索是一层一层搜索&#xf…

stack专题

20 Valid Parentheses 问题&#xff1a;没有意识到字符串中只包含字符&#xff1a;’(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’ 代码&#xff1a;git代码 682 Baseball Game 问题&#xff1a;错误在操作&#xff1a;top1 先弹出&#xff0c;top2 再弹出&#xff0c;还原到…

第三十期:简单好用的9个电脑必备工具!让你轻松10倍

下面 9 款工具都是精心挑选的电脑必备神器&#xff0c;涵盖你需要的各个方面&#xff0c;无论是安全防护、文件查找、解压加密还是娱乐都在其中&#xff1b;最最最重要的是&#xff0c;它们不但各个功能强大&#xff0c;而且非常轻便&#xff0c;没有弹窗广告、没有捆绑安装、也…

【数据结构与算法】字符串匹配 BF算法 RK算法

单模式串匹配 BF 算法和 RK 算法 BM 算法和 KMP 算法多模式串匹配算法 Trie 树和 AC 自动机 一、BF 算法 1&#xff0c;BF算法是Brute Force的缩写&#xff0c;中文译作暴力匹配算法&#xff0c;也叫朴素匹配算法。 2&#xff0c;两个概念&#xff1a;主串和模式串 如在字符串…

第三十一期:大数据分析师学习入门,10个数据可视化技巧

在这篇文章&#xff0c;我想和大家分享 10 个基本的中级和高级的绘图工具。我发现在现实生活中&#xff0c;当涉及到绘图解释你的数据时&#xff0c;这些工具非常有用。 作者&#xff1a;加米谷大数据来源&#xff1a;今日头条 我必须对你说实话&#xff1a;当我学习数据科学时…

[Leetcode][第491题][JAVA][递增子序列][回溯][RK算法]

【问题描述】[中等] 【解答思路】 1. 二进制枚举 哈希 复杂度 class Solution {List<Integer> temp new ArrayList<Integer>();List<List<Integer>> ans new ArrayList<List<Integer>>();Set<Integer> set new HashSet<In…

第五十七期:小型企业将如何从5G中受益

在足够多的新设备进入主流市场之前&#xff0c;5G已经在许多领域引起了越来越多的关注。从IT、零售、交通和制造业到医疗、娱乐、教育和农业&#xff0c;几乎每个行业都将在某种程度上受到5G的影响。 作者&#xff1a;李雪薇来源&#xff1a;IT168网站 在足够多的新设备进入主…

第三十二期:MySQL常见的图形化工具

MySQL作为一款非常流行的、开源的关系型数据库&#xff0c;应用非常广泛。因为MySQL开源的缘故&#xff0c;图形化管理维护工众多&#xff0c;除了系统自带的命令行管理工具之外&#xff0c;还有许多其他的图形化管理工具&#xff0c;这里介绍几个经常使用的MySQL图形化管理工具…