未在Android的状态栏下方绘制React Native Modal

时间:2018-11-22 19:43:46

标签: android react-native mobile expo

在React Native(使用EXPO)中,我展示了一个模态。 Modal在iOS中的StatusBar后面绘制,但在Android上却没有。

你知道为什么吗?我找不到任何解决方案。

状态栏已经设置了translucent={true}属性。这就是为什么您可以在Android上看到StatusBar后面的Map的原因。但是我无法在其后面绘制Modal组件(就像在iOS上一样)。

在这里我添加了几个屏幕截图和一个在线查看器来检查此行为:https://snack.expo.io/BJR4oF4A7

我看到的另一种奇怪的行为是,无论我设置哪个translucent值都无关紧要,它总是以相同的方式工作(即使我将其设置为{{1},它也总是半透明的) }。

如果这是不可能的,如何在Android的StatusBar上将背景设置为#FFF并将字体颜色设置为#000?

我想知道:

  1. 为什么iOS和Android中会有不同的行为。
  2. 为什么更改false的道具仍不能改变其行为(可以在在线查看器中看到,更改StatusBartranslucent的值)
  3. 如果无法在StatusBar后面绘制模态,那么,当打开模态时,如何更改背景和其字体颜色? (在Android中)(不隐藏)

Android Android

iOS iOS

2 个答案:

答案 0 :(得分:0)

  1. 我相信您需要将该应用程序作为独立的应用程序进行尝试,而不是使用Expo客户端。有时以某种方式很难处理StatusBar(我也已经体验过)。
  2. 您可以根据当前状态使用在两个平台上都可以使用的hidden属性:<StatusBar hidden={!!this.state.isModalShown} />

只要打开模态,这就会简单地隐藏状态栏。

答案 1 :(得分:0)

将barStyle设置为对比backgroundColor。

白色背景上为黑色文字,因此白色状态栏上的内容为深色。

<StatusBar barStyle="dark-content" backgroundColor={"#fff"} />