Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安卓&x2B;PhoneGap:android:WindowsofInputMode不';好像不行_Android_Cordova_Android Virtual Keyboard - Fatal编程技术网

安卓&x2B;PhoneGap:android:WindowsofInputMode不';好像不行

安卓&x2B;PhoneGap:android:WindowsofInputMode不';好像不行,android,cordova,android-virtual-keyboard,Android,Cordova,Android Virtual Keyboard,我正在开发一个基于PhoneGap的应用程序,我在谷歌上搜索了很多关于如何让我的webview在虚拟键盘出现时调整其高度,或者至少获得虚拟键盘的高度。我发现很多帖子(包括stackoverflow)都这么说 android:windowSoftInputMode="adjustResize" 必须在清单中设置,我做到了。我还发现对于PhoneGap config.xml <preference name="android-windowSoftInputMode" value="adjus

我正在开发一个基于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):
-键盘可见
-键盘隐藏
在屏幕截图上,我特意捕获了我的manifest和config.xml设置,因此您可能会看到它们实际上在那里。
我甚至录制了短片-

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

请给我一些建议。

windowsofInputMode=“adjustResize”
如果您的应用程序处于全屏模式(在
config.xml
中将
全屏设置为
true
)。这是Android的问题,而不是Cordova。在Cordova bug tracker中存档了几个月,但最近发现在Android bug tracker上


我通过将
全屏
设置为
false
解决了这个问题,因为我的应用程序不全屏并不成问题。

我发现我需要三件事来解决这个问题,并防止actionBar隐藏自己,防止在打开软键盘时滚动出视图

1) 在AndroidManifest.xml中,在所讨论的活动中,我需要一行:

android:windowSoftInputMode="adjustResize"
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
最初的问题是上面的行中存在adjustPan。起初,只是上面的更改解决了问题

我参与的项目使用片段。在onCreateView方法中,另一个片段具有以下行:

android:windowSoftInputMode="adjustResize"
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
不幸的是,这一行覆盖了应用程序清单中的adjustResize参数,在显示另一个片段之后,我修复的片段再次中断。因此,为了修复新的中断,我做了另外两件事

2) 我从另一个片段的onCreateView方法中删除了SOFT\u INPUT\u ADJUST\u PAN行,因为它根本不需要该行

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

android:windowSoftInputMode="adjustResize"
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

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

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

您解决了这个问题吗?如果是,请发布您的解决方案并将其标记为正确答案!