Android + PhoneGap:android:windowSoftInputMode似乎不起作用

时间:2013-11-14 22:36:01

标签: android cordova android-virtual-keyboard

我正在开发一个基于PhoneGap的应用程序,我搜索了很多关于如何在虚拟键盘出现时使我的webview调整其高度,或者至少获得虚拟键盘的高度。我发现很多帖子(包括stackoverflow)都说明了

android:windowSoftInputMode="adjustResize"
必须在清单中设置

,我就这样做了。我还发现,对于PhoneGap config.xml,有

<preference name="android-windowSoftInputMode" value="adjustResize"/>

设置,我也粘贴了。我也尝试了两个参数的组合值'stateVisible | adjustResize'(不仅仅是'adjustResize'),但在我看来它们都没有效果。我不知道,也许我做错了,但你可以从模拟器(Android 4.0.3,但我也试过4.1.2和4.2.2)查看截图:
http://screencast.com/t/Mm0mw8c693 - 键盘可见
http://screencast.com/t/lZ2DomqeRR - 键盘隐藏了 在屏幕截图中,我故意捕获了我的清单和config.xml设置,因此您可能会看到它们确实在那里 我甚至录制了短视频 - http://screencast.com/t/xI9PMcMJxxx

正如您所看到的,当键盘显示/隐藏时,不会发生任何视口大小调整。 我还使用console.log()检查了window.innerHeight,它对于可见和隐藏键盘都保持相同。

请给我一些建议。

3 个答案:

答案 0 :(得分:6)

如果您的应用处于全屏模式(在windowSoftInputMode="adjustResize"中将fullscreen设置为true),则

config.xml无效。 Android的问题不是Cordova。 the issue CB-4404已在Cordova错误跟踪器中提交了几个月,但最近在Android错误跟踪器上发现了it is working as intended

我通过将fullscreen设置为false来解决了这个问题,因为我的应用不能全屏显示问题。

答案 1 :(得分:1)

我发现我需要做3件事来解决这个问题,并阻止actionBar隐藏自己,当软键盘出现时滚动出视图。

1)在AndroidManifest.xml中,在相关活动中,我需要一行:

android:windowSoftInputMode="adjustResize"

最初的问题是adjustPan出现在上面的行中。首先,只是上面的更改解决了问题。

我正在进行的项目使用片段。在onCreateView方法中,不同的片段包含以下行:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

遗憾的是,该行覆盖了应用程序清单中的adjustResize参数,在显示其他片段之后,我修复的片段再次破坏。所以,为了解决这个新的突破,我做了两件事。

2)我从该另一个片段的onCreateView方法中删除了SOFT_INPUT_ADJUST_PAN行,因为它无论如何都不需要该行。

3)在我主要关注的片段的onCreateView方法中,我添加了一行:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

实际上,执行第2项或第3项中的任何一项都可以解决问题。我做的都很彻底。

答案 2 :(得分:0)

要么你可以在android.manifest中将这个属性显式设置为“adjustNothing”,那么你不需要将“全屏”模式设置为false。 但每次更新/添加android平台时都必须更新它。