Phonegap Cordova - 全屏后底部的黑色状态栏
Phonegap Cordova - Black status bar on bottom after fullscreen
从我记事起,我就一直遇到这个问题。我以为它可能只是来自我的 phone 或仿真,但在发布我的应用程序后,我仍然在屏幕底部看到这个黑色矩形,看起来像状态栏。
这发生在我的 config.xml
中有这个之后
<preference name="android-build-tool" value="gradle" />
<preference name="Fullscreen" value="true" />
<preference name="Orientation" value="portrait" />
截图:
更新
我注意到如果我 最小化 游戏并再次点击它(奇怪),底部的黑条消失了。
我尝试创建一个新项目,当我将全屏首选项设置为 config.xml 时,同样的事情发生了。
好像顶栏转移到了底栏>_>
似乎问题出在定义 canvas 的维度上。不久前解决了这个问题,所以我不确定这是否是解决问题的方法:
var c = document.getElementById("canvas1");
var ctx = c.getContext("2d");
var pixelRatio = window.devicePixelRatio || 1; // get pixel ratio of device
c.width = window.screen.width * pixelRatio;
c.height = window.screen.height * pixelRatio;
c.style.width = window.screen.width + 'px';
c.style.height = window.screen.height + 'px';
也尝试删除您的 index.css 文件
默认情况下,DOM 只会填充呈现其内容所需的 space。设置元素 height:100%;
是设置它相对于其父元素高度的高度。如果希望可见元素为屏幕高度,可以设置元素height:1vh;
为屏幕高度。但这可能会导致一些意外的滚动行为,因此另一种方法是设置所有父元素 height:100%;
,从 html 文档开始。
在 css:
html, body, ... other parent elements ... {
height:100%;
}
您可能想要轮询 display/canvas 大小以进行更改。
那个黑带看起来和系统顶部状态栏的大小差不多,所以我怀疑你的应用程序在状态栏被系统 removed/animated 之前收到视口大小。
我在 config.xml
中仅使用 <preference name="Fullscreen" value="true" />
时遇到了同样的问题。
我最初想到的是 Android 状态栏,但对该主题进行了一些研究,现在非常坚信这个问题来自其他 Android 系统 UI 在 Cordova 包装器完成初始化之前不会被隐藏,导致包装器的计算大小错误。
经过长时间的搜索并尝试了您提到的几乎所有内容后,我偶然发现了一个插件:
我现在在 config.xml
中使用它
<preference name="Fullscreen" value="true" />
<preference name="AndroidLaunchMode" value="singleInstance" />
<preference name="DisallowOverscroll" value="true" />
<preference name="KeepRunning" value="true" />
这直接在 deviceready
上触发的方法的第一次播放中
if (AndroidFullScreen) {
// Extend your app underneath the status bar (Android 4.4+ only)
AndroidFullScreen.showUnderStatusBar();
// Extend your app underneath the system UI (Android 4.4+ only)
AndroidFullScreen.showUnderSystemUI();
// Hide system UI and keep it hidden (Android 4.4+ only)
AndroidFullScreen.immersiveMode();
}
目前已使用 Android 6.0、5.0.1 硬件导航和软件导航设备进行测试。也许这对你也有帮助。
您可以使用 cordova 挂钩将 android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
修复应用到 AndroidManifest.xml 或者您可以在 config.xml
中使用 <edit-config>
从 cordova@6.4.0
开始:
<widget ... xmlns:android="http://schemas.android.com/apk/res/android">
...
<edit-config file="AndroidManifest.xml" mode="merge"
target="/manifest/application/activity">
<activity android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
</edit-config>
...
</widget>
来源:
我遇到了同样的问题。对我来说,它主要发生在横向模式下。
我有三星 s7 和三星 tab2。
在 s7 上它发生一次超过 20 次
在 tab2 上,它一直在发生。
我可以通过检查 body 高度与屏幕高度(与像素比相关)
来检测何时出现问题
我应用了 AndroidFullScreen 和技巧
到目前为止,一切都固定在平板电脑上,底部不再有黑条。但是对于 s7 我仍然有这个问题。
s7的像素比为4 tab2的像素比为1
我遇到了同样的问题。使用 cordova 状态栏插件为我修复了它:
http://cordova.apache.org/docs/en/6.x/reference/cordova-plugin-statusbar/index.html#installation
安装插件:
cordova plugin add cordova-plugin-statusbar
删除 config.xml 中的全屏设置并改为添加插件:
<plugin name="cordova-plugin-statusbar" spec="2.2.2" />
调用 StatusBar.hide() 隐藏 JavaScript 中的状态栏。示例:
$(document).ready(function(){
document.addEventListener("deviceready", function(){
StatusBar.hide();
}, false);
});
Camparison Screenshot - Before and After
从我记事起,我就一直遇到这个问题。我以为它可能只是来自我的 phone 或仿真,但在发布我的应用程序后,我仍然在屏幕底部看到这个黑色矩形,看起来像状态栏。
这发生在我的 config.xml
中有这个之后<preference name="android-build-tool" value="gradle" />
<preference name="Fullscreen" value="true" />
<preference name="Orientation" value="portrait" />
截图:
更新
我注意到如果我 最小化 游戏并再次点击它(奇怪),底部的黑条消失了。
我尝试创建一个新项目,当我将全屏首选项设置为 config.xml 时,同样的事情发生了。
好像顶栏转移到了底栏>_>
似乎问题出在定义 canvas 的维度上。不久前解决了这个问题,所以我不确定这是否是解决问题的方法:
var c = document.getElementById("canvas1");
var ctx = c.getContext("2d");
var pixelRatio = window.devicePixelRatio || 1; // get pixel ratio of device
c.width = window.screen.width * pixelRatio;
c.height = window.screen.height * pixelRatio;
c.style.width = window.screen.width + 'px';
c.style.height = window.screen.height + 'px';
也尝试删除您的 index.css 文件
默认情况下,DOM 只会填充呈现其内容所需的 space。设置元素 height:100%;
是设置它相对于其父元素高度的高度。如果希望可见元素为屏幕高度,可以设置元素height:1vh;
为屏幕高度。但这可能会导致一些意外的滚动行为,因此另一种方法是设置所有父元素 height:100%;
,从 html 文档开始。
在 css:
html, body, ... other parent elements ... {
height:100%;
}
您可能想要轮询 display/canvas 大小以进行更改。
那个黑带看起来和系统顶部状态栏的大小差不多,所以我怀疑你的应用程序在状态栏被系统 removed/animated 之前收到视口大小。
我在 config.xml
中仅使用 <preference name="Fullscreen" value="true" />
时遇到了同样的问题。
我最初想到的是 Android 状态栏,但对该主题进行了一些研究,现在非常坚信这个问题来自其他 Android 系统 UI 在 Cordova 包装器完成初始化之前不会被隐藏,导致包装器的计算大小错误。
经过长时间的搜索并尝试了您提到的几乎所有内容后,我偶然发现了一个插件:
我现在在 config.xml
中使用它<preference name="Fullscreen" value="true" />
<preference name="AndroidLaunchMode" value="singleInstance" />
<preference name="DisallowOverscroll" value="true" />
<preference name="KeepRunning" value="true" />
这直接在 deviceready
if (AndroidFullScreen) {
// Extend your app underneath the status bar (Android 4.4+ only)
AndroidFullScreen.showUnderStatusBar();
// Extend your app underneath the system UI (Android 4.4+ only)
AndroidFullScreen.showUnderSystemUI();
// Hide system UI and keep it hidden (Android 4.4+ only)
AndroidFullScreen.immersiveMode();
}
目前已使用 Android 6.0、5.0.1 硬件导航和软件导航设备进行测试。也许这对你也有帮助。
您可以使用 cordova 挂钩将 android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
修复应用到 AndroidManifest.xml 或者您可以在 config.xml
中使用 <edit-config>
从 cordova@6.4.0
开始:
<widget ... xmlns:android="http://schemas.android.com/apk/res/android">
...
<edit-config file="AndroidManifest.xml" mode="merge"
target="/manifest/application/activity">
<activity android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
</edit-config>
...
</widget>
来源:
我遇到了同样的问题。对我来说,它主要发生在横向模式下。 我有三星 s7 和三星 tab2。 在 s7 上它发生一次超过 20 次 在 tab2 上,它一直在发生。 我可以通过检查 body 高度与屏幕高度(与像素比相关)
来检测何时出现问题我应用了 AndroidFullScreen 和技巧 到目前为止,一切都固定在平板电脑上,底部不再有黑条。但是对于 s7 我仍然有这个问题。 s7的像素比为4 tab2的像素比为1
我遇到了同样的问题。使用 cordova 状态栏插件为我修复了它: http://cordova.apache.org/docs/en/6.x/reference/cordova-plugin-statusbar/index.html#installation
安装插件:
cordova plugin add cordova-plugin-statusbar
删除 config.xml 中的全屏设置并改为添加插件:
<plugin name="cordova-plugin-statusbar" spec="2.2.2" />
调用 StatusBar.hide() 隐藏 JavaScript 中的状态栏。示例:
$(document).ready(function(){
document.addEventListener("deviceready", function(){
StatusBar.hide();
}, false);
});
Camparison Screenshot - Before and After