android - 在 Android 上,状态栏和导航栏在启动画面显示时仍然可见。如何摆脱它?
问题描述
这是 Apache Cordova 的一个奇怪问题。我已经设置了一个要为 Android 打包的应用程序。从 Android 4.4 开始,就有了沉浸式模式。所以当我添加:
<preference name="Fullscreen" value="true" />
到config.xml并启动应用程序,我可以看到状态栏从屏幕移到顶部,而导航栏从屏幕移到底部 - 正如预期的那样。
一旦我使用 Cordova 的启动画面插件,使用:
cordova plugin add cordova-plugin-splashscreen
并向 config.xml 添加启动画面,如下所示:
<splash src="res/screen/android/splashScreen.png" />
<plugin name="cordova-plugin-splashscreen" spec="^5.0.2" />
事情有点不同。
在启动画面可见期间,屏幕如下所示:
如您所见,导航和状态栏仍然可见。好吧,只要闪屏消失,我就可以看到状态/导航栏移出屏幕 - 因此看起来现在它正在切换到沉浸式模式。不幸的是,这弄乱了应用程序的布局。看起来实际的应用程序现在位于状态栏和导航栏所在的区域之间。因此,我在顶部和底部有黑色边框,而不是全屏。这看起来有点像这样:
显然 Android 返回错误的屏幕尺寸,因为状态和导航栏仍然存在。一旦闪屏出现在屏幕上,如何强制 Cordova 切换到沉浸式模式?
解决方案
问题:cordova 是否使用了 Android 原生的样式和 Manifest(很确定是这样)?如果是这样,您可以:
在您的活动中使用全屏主题/样式。
在您的styles.xml 上:
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
然后在 Manifest 中使用它。
<activity android:name=".ActivityName"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light.NoActionBar.Fullscreen"/>
推荐阅读
- flutter - 如何在 GridView (Flutter) 中进行分页
- image - Go 生成的动画 GIF 在 Windows 中不起作用
- macos - 如何在 Mac 上设置 Jenkins 从代理以使用 Plastic 检索文件?
- vue.js - $vuetify.goTo('#foo') 不在另一个路由器页面上工作
- scala - 使用 SparkListener 的 Spark 输出拼花大小
- php - 在 Jasper Server 中启动报表时如何在 php 中设置 userLocale 设置?
- python - “不存在'Access-Control-Allow-Origin'标头”对于某些请求但不是其他请求的错误
- validation - 在h2o的GBM中,我同时设置了training_frame、validation_frame和nfolds。我想知道训练的顺序
- node.js - 如何使用 json.parse 将字符串转换为对象?
- excel - 比较两列,如果两列都匹配,则应突出显示