2016-04-03 78 views
8

我一直有这个问题,只要我记得。我认为它可能只是来自我的手机或模拟器,但是在发布我的应用程序后,我仍然可以在屏幕底部看到这个黑色的矩形,它看起来像状态栏。Phonegap Cordova - 全屏后底部黑色状态栏

出现这种情况我有这个在我的config.xml后

<preference name="android-build-tool"  value="gradle" /> 
<preference name="Fullscreen"    value="true"  /> 
<preference name="Orientation"    value="portrait" /> 

截图:

enter image description here

UPDATE

我注意到底部的黑色条消失,如果我MINIMIZE游戏,并单击它右后卫(怪异)。

我试图创建一个新的项目,同样的事情发生后,我把全屏首选项在config.xml中。

好像顶栏传送到底部> _>

+1

你能提供科尔多瓦版本的Android版本的任何框架等细节? – Mark

+0

你有没有找到解决方案?我有完全一样的问题。 – coderama

+0

@coderama这可能听起来很疯狂,但你可以尝试设置适当的尺寸启动iamges和检查一次,因为这会导致在iOS的问题 – Gandhi

回答

0

看来问题是与限定画布的尺寸。解决了这个前一阵子,所以我不知道这是什么固定它:

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文件

+0

你能详细说明这个代码吗?什么是canvas1?显示可见信息的第一个div? – coderama

+0

我得到“c.getContext不是函数”。 – coderama

+1

不,这只是简单的不起作用。 – coderama

1

默认情况下,DOM将只填写渲染所需的空间的内容。设置一个元素height:100%;将其设置为相对于其父元素高度的高度。如果您希望可见元素是屏幕的高度,则可以设置屏幕高度的元素height:1vh;。这可能会导致一些意想不到的滚动行为,所以另一种方法是设置所有父元素height:100%;,从html文档开始。 in css:

html, body, ... other parent elements ... { 
    height:100%; 
} 
+0

1vh将意味着1%的屏幕高度。要真正适合整个屏幕的高度,这将是100vh;) – Hezad

1

您可能想要轮询显示/画布大小以进行更改。

该黑带看起来像系统的顶级状态栏大小一样,所以我怀疑你的应用在状态栏被系统移除/动画之前正在接收视口大小。

+0

我有完全相同的问题,但只发生有时。我尝试了整整一天来解决这个问题,并且也持相同的观点,即Cordova在Android删除条之前请求高度,导致渲染画布太小。你有没有找到解决方案? – devjsp

+0

找到了适合我的解决方案,请参阅我的答案了解详情。 – devjsp

2

我在我的​​3210中仅使用了<preference name="Fullscreen" value="true" />,我遇到了同样的问题。

我最初想到的是Android状态栏,但对该主题进行了一些研究,现在有一个非常强烈的信念,认为这个问题来自其他Android系统UI,直到Cordova包装器完成初始化之后才会隐藏,导致包装的计算大小错误。

经过长时间的搜寻,并尝试你也提到了几乎所有后,我偶然发现了一个插件:

https://github.com/mesmotronic/cordova-plugin-fullscreen

我现在在confix用这个。XML

<preference name="Fullscreen" value="true" /> 
<preference name="AndroidLaunchMode" value="singleInstance" /> 
<preference name="DisallowOverscroll" value="true" /> 
<preference name="KeepRunning" value="true" /> 

,这将直接在方法的第一个FLASH播放器触发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与harware导航软件和导航设备进行测试。也许这可以帮助你。

+0

全屏插件为我工作,但与设备上的另一个功能 'if(window.AndroidFullScreen){ window.AndroidFullScreen.showSystemUI(); window.AndroidFullScreen.immersiveMode(); }' Android 4.4.2 – zamuka

1

您可以使用科尔多瓦钩到android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"修复程序应用于AndroidManifest.xml中,也可以在​​3210使用<edit-config>开始[email protected]

<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>

来源:Cordova fullscreen splash screen on Android still shows title bar

0

我对着同样的问题。它主要发生在风景模式中。 我有一个三星s7和三星tab2。 在s7上它发生一次超过20次 在tab2上它一直发生。 什么是错的(与像素比例关系)检查车身高度相对于screenheight

我申请AndroidFullScreen和招 到目前为止,一切都固定在平板电脑上,在没有更多的昏暗的酒吧我可以检测底端。但对于S7我仍然有这个问题。 s7的像素比为4,tab2的像素比例为1

1

我有同样的问题。使用科尔多瓦状态栏插件固定对我来说: 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

+0

jQuery文档就绪位不是必需的,但否则这对我很好。 – camomileCase