我正在尝试将android上的导航栏设置为半透明。看一下这个图像,例如:
(来源:morenews.pk)
我试过使用react-native-navigation-bar-color
,但它只允许我隐藏导航栏/显示导航栏/改变导航栏的颜色。所以使用这个导航栏库,我试图设置changeNavigationBarColor('transparent');
,但它使我的应用程序崩溃。
我也试过在AndroidManifest.xml
中设置android:fitsSystemWindows="true"
,这是我从here带来的,但不幸的是没有什么变化。
6条答案
按热度按时间dfddblmv1#
获得半透明导航和状态栏的一个好方法是在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中的实现示例:
这将使您的内容呈现在状态和导航栏下方。
要解决这个问题,您可以使用
react-native-safe-area-context
来获取安全区域insets。安全内容视图示例:
cgh8pdjw2#
所以我看了一下这个模块,发现它只是使用了原生的android
Color
库来解析字符串。(可以在这里找到它的链接:https://developer.android.com/reference/android/graphics/Color)我能够使用文档中指定的
#AARRGGBB
模式获得导航栏透明度。不支持3或4个字母的十六进制字符串,也不支持rgb字符串。一些颜色名称被列为支持,但transparent
不是其中之一。不幸的是,即使我能够将导航栏设置为完全透明,我也无法让应用程序在它后面实际绘制任何东西,所以完全透明实际上最终只是白色,而介于两者之间的任何东西都是相对于白色背景的透明度。
deikduxw3#
您似乎不接受字符串值。你想试试这个吗?
3npbholx4#
我们需要自定义导航栏,并添加安全区。然后给予您所需的颜色安全区。下面是一个例子,
tvmytwxo5#
我猜是迟到了,但今天对我有用的是,使用expo,可以在https://docs.expo.dev/versions/latest/sdk/navigation-bar/找到
做
npx expo install expo-navigation-bar
然后在
App.js
文件中的函数块之前添加以下内容:r1wp621o6#
你只需要在app.json中添加以下代码: