1

有一个关于活动的 web 视图,我需要键盘始终显示在页面上,无论输入如何(可能不在某些页面上输入)。

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

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

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

2 回答 2

2

您可以android:windowSoftInputMode="stateAlwaysVisible"在您的manifest.xml

<activity android:name=".YourActivity"
android:windowSoftInputMode="stateAlwaysVisible" />
于 2019-04-17T14:41:27.283 回答
0

以下答案仅在我们有单个活动和 web 视图时才有效。未针对大型应用进行测试。

答案来自自定义键盘 InputMethodService。

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

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

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

这将防止活动后按事件,我们需要实现如下给出的逻辑

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && SoftKeyboard.activity != null) {
        SoftKeyboard.activity.onBackPressed();
    }
    return super.onKeyDown(keyCode, event);
}
于 2019-04-24T07:30:42.347 回答