Как спрятать программные клавиши 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, так как фокус окна также достигается при создании действия.

Другие вопросы по тегам