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