【问题标题】:cordova soft input mode android科尔多瓦软输入模式android
【发布时间】:2016-06-10 00:02:20
【问题描述】:

我的 Cordova 应用程序包含多个 html 文件,每个文件代表不同的视图,但键盘搞乱了 webview。在 iOS 上,我使用了 ionic-plugin-keyboard 的

cordova.plugins.Keyboard.disableScroll(true);

修复问题,但仅支持 iOS。我可以添加

android:windowSoftInputMode="adjustPan" 到 AndroidManifest.xml 似乎可以修复它,但我希望这仅适用于一个视图。换句话说,我希望键盘向上推除一个特定视图之外的视图。

我以为我可以在这两者之间切换

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

取决于我所在的视图,但看起来一旦设置了 setSoftInputMode,以后就无法更改?解决这个问题的最佳方法是什么?另外,我将如何防止键盘向上推页脚? (此行为仅出现在 Android 中)。

对不起,如果我的问题令人困惑,但我这几天一直在尝试解决这些问题,键盘真的让我很沮丧。

【问题讨论】:

    标签: cordova ionic-framework hybrid-mobile-app


    【解决方案1】:

    我想我找到了解决这个问题的最佳方法。我做了一个科尔多瓦插件。 当我写这个问题时(比这个答案早 30 分钟),我不知道如何创建一个 Cordova 插件,所以我遵循了这个很棒的教程:http://www.mat-d.com/site/tutorial-creating-a-cordova-phonegap-plugin-for-android-app/

    基于这个我导入了import android.view.WindowManager;,然后在runOnUiThread runnable 的执行函数中添加了这个

    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的链接

    所有的说明都在那里

    【讨论】:

    • 这很好,但如何将它添加到 config.xml?
    • 好吧,这似乎有点工作:github.com/denkomanceski/windowSoftInputMode.git"> 但现在在我的 .ts 文件中它说找不到 windowSoftManager
    猜你喜欢
    • 2016-02-24
    • 2016-10-05
    • 2015-05-19
    • 2016-04-12
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    相关资源
    最近更新 更多