react native 状态栏和安全区域的使用
2024-10-21 19:52:03
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
最新文章
- Selenium2+python自动化23-富文本(自动发帖)
- 使用UEditor无法SetContent的问题
- oracle体系结构详细示意图
- node-webkit中使用sqlite3(MAC平台)
- acdream 1681 跳远女王(BFS,暴力)
- silverlight 文本框只能输入数字
- Java操作字符串的工具类
- Linux基本配置和管理 1---- Linux网络基本配置
- wx_sample.php
- EF一次请求公用一个实例
- web.confgi转换,web发布时发布配置(debug/release)生成不同的配置文件
- C#运算符的简单使用测试
- 6B - 火星A+B
- 动态sql and在前 逗号在后
- .Net反编译软件
- datatables 添加excel下载
- 杭电多校第三场 A Ascending Rating
- Jmeter-接口功能测试
- 剑指offer:二叉树的镜像
- Ueditor结合七牛云存储上传图片、附件和图片在线管理的实现和最新更新
热门文章
- springboot跨域解决
- 【一句话】Redis的3中缓存策略
- 计算机网络基础08 Socket网络通信
- 无法加载 DLL“*******.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
- 1 .NET Core笔试题
- NETAPP 设备 C模式开关机顺序
- Autoit 制作上传工具完美版
- 线段树优化DP学习笔记 &; JZOJ 孤独一生题解
- CF1141F2 Same Sum Blocks (Hard)
- postgresql 数据库 INSERT 或 UPDATE 大量数据时速度慢的原因分析