我的cordova应用程序包含多个html文件,每个文件代表不同的视图,但键盘搞乱了webview。在iOS上我使用了离子插件键盘
cordova.plugins.Keyboard.disableScroll(true);
解决问题,但只支持iOS。我可以添加
机器人:windowSoftInputMode = “adjustPan” AndroidManifest.xml似乎解决了它,但我希望这只适用于一个视图。换句话说,我希望键盘能够向上推动除一个特定视图之外的视图。
我以为我可以在这两个之间切换
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
取决于我所处的视图,但看起来一旦设置了setSoftInputMode,以后就无法更改它?解决这个问题的最佳方法是什么?另外,我如何防止键盘向上推? (此行为仅出现在Android中)。
很抱歉,如果我的问题令人困惑,但我现在已经尝试解决这些问题几天了,键盘让我很沮丧。
答案 0 :(得分:3)
我想我找到了解决这个问题的最佳方法。我做了一个cordova插件。 当我写这个问题时(在这个答案前30分钟),我不知道如何创建一个cordova插件,所以我遵循了这个很棒的教程:http://www.mat-d.com/site/tutorial-creating-a-cordova-phonegap-plugin-for-android-app/。
基于此,我导入import android.view.WindowManager;
而不是runOnUiThread
runnable中的execute函数,我添加了这个
if(action.equals("adjustPan"))
cordova.getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
else if(action.equals("adjustResize"))
cordova.getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
根据我从javascript调用函数的方式,它会改变输入模式:)
我将此插件添加到github并在此处添加链接
编辑:以下是插件https://github.com/denkomanceski/windowSoftInputMode
中的链接所有说明都在那里