如何防止键盘隐藏

时间:2019-04-17 14:27:04

标签: android hide android-softkeyboard android-custom-keyboard

对活动有网络视图,无论输入内容如何,​​我都需要键盘始终显示在页面上(某些页面可能无法输入)。

当用户按下按钮或发生任何单击事件时,也不应隐藏键盘。

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

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

2 个答案:

答案 0 :(得分:1)

您可以在android:windowSoftInputMode="stateAlwaysVisible"中添加manifest.xml

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

答案 1 :(得分:0)

以下答案仅在我们具有单个活动和Web视图时才有效。未经大型应用测试。

答案来自于自定义键盘InputMethodService。

hideWindow()是一种重写方法,我们可以限制键盘的隐藏力

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

@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);
}