8

我正在开发一个基于 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 ,可见键盘和隐藏键盘都保持不变。

请给我一些建议。

4

3 回答 3

6

windowSoftInputMode="adjustResize"fullscreen如果您的应用程序处于全屏模式(设置为truein config.xml),则不起作用。这是 Android 的问题,而不是 Cordova。CB-4404 问题已在 Cordova 错误跟踪器中提交了数月,但最近事实证明它在 Android 错误跟踪器上按预期工作。

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

于 2014-05-23T09:18:55.153 回答
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)在我主要关心的fragment的onCreateView方法中,我加了一行:

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

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

于 2014-12-16T03:31:19.223 回答
0

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

于 2016-02-10T06:58:28.183 回答