打开Android键盘时,如何将Cordova应用程序全屏显示?

时间:2015-09-07 17:06:17

标签: android cordova webview

我已经创建了一个Cordova应用程序,并且我在Nexus 4上对其进行了测试。我已经使用了Cordova CLI工作流程中列出的基本步骤来启动和运行。我还用这个修改了我的config.xml:

<preference name="Fullscreen" value="true" />

我的应用按预期全屏运行。一旦我点击输入字段,键盘就会按预期向上滑动,但是Android的黑色顶部和底部条形也会出现,即使在键盘关闭后也是如此。

更糟糕的是,他们实际上隐藏了部分应用。此时,摆脱它们并返回全屏的唯一方法是退出应用程序并重新启动它。更新:我发现用户可以通过向下滑动状态栏或点击最近的应用按钮来删除它们,但这并不明显。

有没有办法阻止顶部和底部的条形图出现?

理想情况下,我希望避免更改platforms/android目录中的任何内容,因为我是移动开发的新手。也许有一个配置选项,挂钩,甚至是一个插件,我可以放下来解决这个问题?

3 个答案:

答案 0 :(得分:10)

对我来说,在我更新到cli-5.2.0后它开始重现。 到目前为止我找到了2个解决方案:

  1. 切换回cli-5.1.1
  2. 添加cordova-plugin-fullscreen并将AndroidFullScreen.immersiveMode()放入DeviceReady事件处理程序中。
  3. 我更喜欢第二种解决方案。我希望这个问题将在未来的cordova版本中修复,我将能够删除我的解决方法。我相信相关的票证是这样的:https://issues.apache.org/jira/browse/CB-8902

答案 1 :(得分:0)

另一种选择是使用Cordova Reference Plugin API“StatusBar”。

Cordova 6.3.1 CLI-5.3.7

  

cordova插件添加cordova-plugin-statusbar

以下代码将隐藏状态栏。我使用“if(window.StatusBar)”,因为在非cordova平台上运行相同的功能(例如独立浏览器)。

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    if (window.StatusBar) window.StatusBar.hide();
}

https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-statusbar/index.html

答案 2 :(得分:0)

作为发布修复程序之前的解决方案,我使用jQuery .focusout()并再次简单地启动沉浸式模式。

$('#page_textinput').focusout(function (event) {
    AndroidFullScreen.immersiveMode();
});

它可能属于“快速且肮脏”类别,但对我有用。