Как навсегда скрыть панель навигации в Jelly Bean (до KitKat) в Android Activity?

Я сделал полноэкранное приложение для Android, которое скрывает панель навигации и строку состояния, поддерживающую API 16 (начиная с Jelly Bean). Я знаю, что если я хочу скрыть панель навигации и строку состояния, начиная с KitKat, я могу использовать следующий код:

getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

Но этот код не работает для Jelly Bean, он скрывает полосы только один раз, и они появляются снова, когда вы касаетесь экрана. Итак, я знаю, что следующий код поддерживает Jelly Bean, но он скрывает только строку состояния:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

Может кто-нибудь показать мне способ скрыть панель навигации на Jelly Bean навсегда?

1 ответ

Попробуйте скрыть строку состояния / панель навигации еще раз после того, как она появится на экране.

Вот информация о том, как прослушивать изменения пользовательского интерфейса:

https://developer.android.com/training/system-ui/visibility.html

Соответствующая часть:

View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener
        (new View.OnSystemUiVisibilityChangeListener() {
    @Override
    public void onSystemUiVisibilityChange(int visibility) {
        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
            // system bars are visible
            // hide them again, maybe with some delay?
        }
    }
});
Другие вопросы по тегам