Полноэкранный режим + панель действий (иммерсивное)

В настоящее время я использую низкопрофильный режим, чтобы скрыть верхнюю черную полосу и затемнить нижнюю панель навигации. Я хочу использовать иммерсивный режим на Android, но у меня проблемы с панелью действий. Я хотел бы сделать иммерсивный режим липким, но оставить панель действий там, где она должна быть. Нет ли способа сделать это?

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

@TargetApi(19)
@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        if (android.os.Build.VERSION.SDK_INT >= 19) {
            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);
        }
    }
}

Любой совет был бы замечательным. Спасибо.


person Andres S    schedule 08.03.2014    source источник


Ответы (2)


Я только что попробовал этот код на своем nexus 7 (Android 4.4.2) и отлично работает.

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
        if (hasFocus) {
            decorView
                    .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        }
    }
}
person benleung    schedule 21.03.2014
comment
Да, виновником оказался View.SYSTEM_UI_FLAG_LAYOUT_STABLE. Однако теперь, когда я начинаю новую деятельность, столбцы поднимаются (затем снова опускаются). Есть ли способ установить эти флаги перед началом действия? - person Andres S; 23.03.2014

Вы можете добавить это закрытие в событие onResume.

@Override
    public void onResume() {
        super.onResume();
        getWindow().getDecorView().setSystemUiVisibility(
                View.GONE);
    }
person William    schedule 25.09.2017