Как спрятать программные клавиши Android
В моем приложении для Android я скрываю панель софт-клавиш, используя это:
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
Но проблема в том, что когда появляется какое-то окно сообщения или всплывающее окно, снова отображаются программные клавиши. Я хочу скрыть программные клавиши при отображении любого сообщения или тоста.
Это возможно.. как я могу это сделать.
1 ответ
Такие сообщения, как диалоги, выбор намерений, программная клавиатура и тосты, используют окно, отличное от основного окна приложения.
Эти дополнительные окна могут изменять флаги SystemUiVisibility и Window по мере их появления и исчезновения.
То, что я нашел, чтобы работать в большинстве случаев, это установить ваши флаги в onWindowFocusChanged
в классе Activity:
public void onWindowFocusChanged(boolean hasFocus) {
if(hasFocus) {
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
}
}
Вам больше не нужен этот код в onCreate, так как фокус окна также достигается при создании действия.