react native 状态栏和安全区域的使用
1. 状态栏组件,react native文档提供了说明。我需要的是设置透明效果,如下图。

代码如下
<StatusBar translucent={true} backgroundColor="rgba(0, 0, 0, 0)" />
解释:StatusBar设置在哪个页面,加载该页面时才会生效。而且作用全局。我们的项目需要,仅仅是透明就可以,我就在登陆界面设置就可以。
2. 安全区域,react native文档提供了safeAreaView,但有问题目前支持IOS,不兼容Android 。我使用了react-navigation里提供的safeAreaView,会导致状态栏透明修过不对。最后采用了第三方库。
react-native-safe-area-view 中它提供的safeAreaView。
最后总的代码
import * as React from 'react';
import { View,Text, StatusBar, Button, StyleSheet,ImageBackground } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack'; // 导入 SafeAreaProvider ,包裹根组件路由
import { SafeAreaProvider } from 'react-native-safe-area-context';
// 包裹组件
import SafeAreaView from 'react-native-safe-area-view'; function Screen1({ navigation }) {
return (
<SafeAreaView style={[styles.container]}>
<StatusBar translucent={true} backgroundColor="rgba(0, 0, 0, 0)" />
<ImageBackground style={[styles.imgBackground]} source={require('./img/my_img_bg.png')}>
<Text>你好世界</Text>
</ImageBackground>
<Text style={{color: '#fff'}}>Light Screen</Text>
<Button
title="Next screen"
onPress={() => navigation.navigate('Screen2')}
color="#fff"
/>
</SafeAreaView>
);
} function Screen2({ navigation }) {
return (
<SafeAreaView style={[styles.container]}>
<StatusBar translucent={true} backgroundColor="rgba(0, 0, 0, 0)" />
<ImageBackground style={[styles.imgBackground]} source={require('./img/my_img_bg.png')}>
<Text>另一个组件</Text>
</ImageBackground>
<Button
title="Next screen"
onPress={() => navigation.navigate('Screen1')}
/>
</SafeAreaView>
);
} const Stack = createStackNavigator(); export default function App() {
return (
<SafeAreaProvider>
<NavigationContainer>
<Stack.Navigator headerMode="none">
<Stack.Screen name="Screen1" component={Screen1} />
<Stack.Screen name="Screen2" component={Screen2} />
</Stack.Navigator>
</NavigationContainer>
</SafeAreaProvider>
);
} const styles = StyleSheet.create({
container: { flex: 1 },
imgBackground:{
flex:0,
height: 280,
width:"100%",
},
});
3. 每个页面,不同的statusBar
react native 状态栏和安全区域的使用的更多相关文章
- React native 放大点击区域 hitSlop属性的使用
在日常的需求中,如上图的加减按钮,可能写ui布局的时候没考虑实际的这个点击范围太小,不利于真机上用户点击到,如果加包裹层加padding的话又会影响原先定好的布局,或者不利于对齐. 那么可以用 hi ...
- [RN] React Native 实现 类似京东 的 沉浸式状态栏和搜索栏
React Native 实现 类似京东 的 沉浸式状态栏和搜索栏 其原理其实就是在要 隐藏 部分的那个View 前面加入 StatusBar 代码! 代码如下: <StatusBar anim ...
- React Native 常见问题集合
在使用React Native时候,我记录下比较常遇到的问题,分为以下几类: 1. 调试问题 2. 写法问题 3. 疑难问题 4. 奇怪问题 调试问题 1. 在react-native run-and ...
- React Native中自定义导航条
这是2017年年初开始的公司的项目,对于导航条的要求很高,Android和iOS上必须用一致的UI,按钮位置还有各种颜色都有要求,而且要适应各种奇葩要求. 尝试了一下当时React Native自带的 ...
- 📝 没 2 年 React Native 开发经验,你都遇不到这些坑
如果你喜欢我的文章,希望点赞 收藏 评论 三连支持一下,谢谢你,这对我真的很重要! React Native 开发时,如果只是写些简单的页面,基本上按着官方文档 reactnative.dev就能写出 ...
- React Native:使用 JavaScript 构建原生应用
[转载] 本篇为联合翻译,译者:寸志,范洪春,kmokidd,姜天意 数月前,Facebook 对外宣布了正在开发的 React Native 框架,这个框架允许你使用 JavaScript 开发原生 ...
- React Native之ListView使用
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- React Native之 ScrollView介绍和使用
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- React Native 之 TextInput使用
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- React Native FlexBox
FlexBox 是React Native布局的一种算法,目的是为了适配不同尺寸的屏幕而设计的. 使用时最关键的就是flex关键字的用法. flex用于修饰当前View在父视图中的占比. 占比如何计算 ...
随机推荐
- 使用pycharm打开sqlite的问题
目录 问题:有同学在sqlite数据库文件执行数据库迁移完成前,点开了他,导致sqlite数据库被pycharm当成文本文件打开了,并且不会改了. 其实sqlite文件和电脑中的其他文件(xx.mp4 ...
- JSP第八次作业
数据库test 中建个表 stu(stuid 主键 自动增长 ,用户名,密码,年龄) 1.设计一个注册页面,实现用户注册功能2.设计一个登陆页面,实现用户名密码登陆3.两个页面可以互相超链接 1 pa ...
- 笔记: C#RabbitMQ初步使用记录
Rabbitmq 的使用场景有哪些? ①. 跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列.就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通讯方式. ②. 多个应用之间 ...
- 简述 Gin 框架如何集成swagger
https://blog.csdn.net/raogeeg/article/details/86743953 @Title 这个 API 所表达的含义,是一个文本,空格之后的内容全 ...
- 借教室NOIP2012
题目: 这道题目就是差分加二分答案. 先看为什么能差分,因为题目中的从s[j]借到t[j]就相当于对一个区间进行操作:再看为什么能二分,废话有单调性啊因为可以借n个教室那也可以借n个以下的教室,相反如 ...
- 虚拟机配置代理(虚拟机nat)
桥接 第一步:打开clash allow lan 第二步:找到宿主机在局域网中的IP地址 第三步:配置虚拟机代理 NAT 同上 注意 一.宿主机防火墙要配置好(直接关闭会也有效果, ...
- Laravel 刚创建的项目 API 无法使用 Session,是没有在Api的请求内开启Session
- 视觉十四讲:第七讲_2D-2D:对极几何估计姿态
1.对极几何 从2张图片中,得到若干个配对好的2d特征点,就可以运用对极几何来恢复出两帧之间的运动. 设P的空间坐标为: \(P=[X,Y,Z]^{T}\) 两个像素点\(p_{1},p_{2}\)的 ...
- JDK、JRE、JVM三者之间的关系
JDK.JRE.JVM 以下内容转载自JDK.JRE和JVM三者之间关系_geyouchao的博客-CSDN博客 侵删,谢谢 JDK:Java Development Kit (Java开发工具包) ...
- RuntimeError: CUDA error: device-side assert triggered
调试diffusion模型时在loss处报错,报错位置: `acc_train_loss += loss.item()` RuntimeError: CUDA error: device-side a ...