Иммерсивный режим Android

Я хочу скрыть панель навигации. Онил показывает, если пользователь накачивает палец снаружи внутрь. Я тестирую этот код:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

  if(hasFocus) {
        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);
    }
}

Активность начинается хорошо, а панели навигации не появляются. Но есть следующие проблемы: 1) Если коснуться экрана в любом месте, отображается панель навигации. 2) Когда он отображается, он не отображается прозрачным. 3) Панель навигации никогда не скрывается.

Как можно добавить эти три элемента? Что мне не хватает.


person user3240604    schedule 30.06.2016    source источник


Ответы (1)


Добавьте липкий флаг View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY в setSystemUiVisibility, как описано в документации https://developer.android.com/training/system-ui/immersive.html#sticky

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

person kosev    schedule 20.10.2016