Как отключить строку состояния в oreo?

Есть много вопросов, связанных с отключением строки состояния.

Я пробовал так. Но не работало в Android 8.0.

потому что согласно Документу Google

Окна предупреждений Если приложение использует разрешение SYSTEM_ALERT_WINDOW и использует один из следующих типов окон, чтобы попытаться отобразить окна предупреждений над другими приложениями и системными окнами:

TYPE_PHONE
TYPE_PRIORITY_PHONE
TYPE_SYSTEM_ALERT
TYPE_SYSTEM_OVERLAY
TYPE_SYSTEM_ERROR

... тогда эти окна всегда появляются под окнами, которые используют тип окна TYPE_APPLICATION_OVERLAY. Если приложение предназначено для Android 8.0 (уровень API 26), оно использует тип окна TYPE_APPLICATION_OVERLAY для отображения окон предупреждений.

Я уже пробовал Как отключить щелчок и опускание строки состояния в Android? но это работает только под Android 8.0.

How to disable status bar in Android 8.0?

1
0
1 120
2

Ответы 2

Вы пробовали что-нибудь с флагом SYSTEM_UI_FLAG_FULLSCREEN?

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

Play around with the different flags in here and see what all you need. By the sounds of it you probably just need the last flag -- unless you wish to hide the navigation as well -- then you'll probably want the last two flags set.

private void hideSystemUI() {
    // Enables regular immersive mode.
    // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
    // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE
            // Set the content to appear under the system bars so that the
            // content doesn't resize when the system bars hide and show.
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            // Hide the nav bar and status bar
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
    );
}

Then take and implement this new method by overriding the onWindowFocusChanged( ... ) method like so.

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

    if (hasFocus) {
        hideSystemUI();
    }
}

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

Еще один отличный ресурс, как всегда, - это документы Google. Есть хорошая информация об управлении видимостью системного UI здесь.

Смотрите ответ здесь. Мы не можем заблокировать строку состояния в Oreo. Только можно закрыть с помощью службы.

https://stackoverflow.com/a/56292743/3405508

Спасибо за ответ, я уже реализовал этот сценарий в своем приложении.

Chirag Savsani 24.05.2019 15:15

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