javascript - React Native Android 导航栏半透明
问题描述
我正在尝试在 android 上将导航栏设置为半透明。以图像为例:
我尝试使用react-native-navigation-bar-color
,但它只允许我隐藏导航栏/显示导航栏/更改导航栏的颜色。所以使用这个导航栏库,我试图设置changeNavigationBarColor('transparent');
,但它使我的应用程序崩溃。
我也尝试过从这里带来的设置android:fitsSystemWindows="true"
,但不幸的是没有任何改变。AndroidManifest.xml
解决方案
获得半透明导航和状态栏的一个好方法是在android > app > src > main > res > values > styles.xml中添加 3 个样式项
这些会将底部导航栏设置为半透明:
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentNavigation">true</item>
这将顶部状态栏设置为半透明:
<item name="android:windowTranslucentStatus">true</item>
styles.xml 中的实现示例:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:textColor">#000000</item>
<!-- Make status & navigation bar translucent -->
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
这将使您的内容呈现在状态和导航栏下方。
要解决此问题,您可以使用react-native-safe-area-context
获取安全区域插图。
安全内容视图的示例:
import { SafeAreaInsetsContext } from "react-native-safe-area-context";
const ContentView = (props) => {
const safeInsets = useContext(SafeAreaInsetsContext);
return (
<View
style={[
{
marginLeft: safeInsets?.left,
marginTop: safeInsets?.top,
marginRight: safeInsets?.right,
marginBottom: safeInsets?.bottom
}
]}
>
{props.children}
</View>
);
}
推荐阅读
- mule - 在 Mule 4 中 SAP 配置连接的 DestinationDataProvider 错误
- kubernetes - 如何使现有的 configmaps 使用 kubernetes 机密
- c++ - GCC9 是否允许避免 std::variant 的无价值状态?
- ios - 如何使用 SwiftUI 连续呈现两个警报视图
- javascript - String.prototype.replace 不会替换 × 字符
- c# - VS2017上不会打断点
- .net - 有重复项时对最左/最右元素进行二分搜索
- jsf - 如何根据从 o:socket 的消息中接收到的数据来渲染组件?
- javascript - 我的代码在同一个文件中时停止工作
- java - 据我所知,showinputdialog 返回字符串类型的输出,但它给了我一个错误,它无法将对象转换为字符串