如何防止键盘隐藏在视图中

How to prevent the keyboard hide from view

在 activity 上有一个 webview,我需要键盘始终显示在页面上,无论输入如何(在某些页面上可能无法输入)。

此外,当用户按下按钮或任何点击事件时,键盘不应隐藏。

我尝试了以下选项(尝试了所有标志类型)但找不到。

InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_SHOWN);

您可以在 manifest.xml

中添加 android:windowSoftInputMode="stateAlwaysVisible"
<activity android:name=".YourActivity"
android:windowSoftInputMode="stateAlwaysVisible" />

只有当我们有一个 activity 和一个网络视图时,下面的答案才有效。未针对大型应用程序进行测试。

答案来自自定义键盘InputMethodService。

hideWindow() 是我们可以限制键盘隐藏的覆盖方法,

showKeyboardAlways 和 activity 是静态变量。键盘限制仅适用于当前应用程序而不适用于所有应用程序。

@Override
public void hideWindow() {
    if (!showKeyboardAlways || SoftKeyboard.activity == null) {
        super.hideWindow();
    }
}

这将阻止 activity 后退事件,我们需要实现下面给出的逻辑

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && SoftKeyboard.activity != null) {
        SoftKeyboard.activity.onBackPressed();
    }
    return super.onKeyDown(keyCode, event);
}