我正在开发一个基于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,它对于可见和隐藏键盘都保持相同。
请给我一些建议。
答案 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平台时都必须更新它。