Как предотвратить скрытие клавиатуры из поля зрения

#android #hide #android-softkeyboard #android-custom-keyboard

#Android #скрыть #android-softkeyboard #android-пользовательская клавиатура

Вопрос:

У меня есть веб-просмотр активности, мне нужно, чтобы клавиатура всегда отображалась на странице независимо от ввода (может не вводиться на какой-то странице).

Также клавиатура не должна быть скрыта, когда пользователь нажимает кнопку или любое событие щелчка.

Я попробовал следующие варианты (пробовал со всеми типами флагов), но не смог их найти.

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

Комментарии:

1. Вы не можете запретить клавиатуре скрывать себя. В приложении нет возможности предотвратить это.

Ответ №1:

Вы можете добавить android:windowSoftInputMode="stateAlwaysVisible" в свой manifest.xml

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

Комментарии:

1. Когда я нажимаю вкладку снаружи или нажимаю кнопку или назад, клавиатура отключается. Он должен всегда оставаться на экране

Ответ №2:

Приведенный ниже ответ работает только тогда, когда у нас есть одно действие и веб-просмотр. Не тестировалось для больших приложений.

Ответ заключается в настройке клавиатуры InputMethodService.

HideWindow() — это метод переопределения, с помощью которого мы можем ограничить скрытие клавиатуры,

showKeyboardВсегда и 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 amp;amp; SoftKeyboard.activity != null) {
        SoftKeyboard.activity.onBackPressed();
    }
    return super.onKeyDown(keyCode, event);
}