Android 如何防止键盘从视图中隐藏

Android 如何防止键盘从视图中隐藏,android,hide,android-softkeyboard,android-custom-keyboard,Android,Hide,Android Softkeyboard,Android Custom Keyboard,有一个活动的网络视图,我需要键盘始终显示在页面上,无论输入(可能不是在某些页面上输入) 此外,当用户按下按钮或任何单击事件时,键盘不应隐藏 我尝试了以下选项(尝试了所有标志类型),但找不到一个 InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.toggleSoftInput (InputMethodManager.S

有一个活动的网络视图,我需要键盘始终显示在页面上,无论输入(可能不是在某些页面上输入)

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

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

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

您可以在
manifest.xml

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

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

答案来自于定制键盘InputMethodService

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

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

@Override
public void hideWindow() {
    if (!showKeyboardAlways || SoftKeyboard.activity == null) {
        super.hideWindow();
    }
}
这将防止活动back press事件,我们需要实现下面给出的逻辑

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

当我在外面按tab键或按下按钮或后退时,键盘会关闭。它应该一直在屏幕上,你不能阻止键盘决定隐藏自己。应用程序没有阻止它的钩子。