1

有很多与禁用状态栏相关的问题。

我试过这样。但在 Android 8.0 中不起作用。

因为根据谷歌文档

警报窗口 如果应用程序使用该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 以下。

如何在 Android 8.0 中禁用状态栏?

4

2 回答 2

0

你试过用国旗做些SYSTEM_UI_FLAG_FULLSCREEN什么吗?

由于我不确定您到底在寻找什么,我会尝试给出一个通用的答案,您可以根据您的用例进行调整。我希望它可以帮助某人。

在这里玩不同的标志,看看你需要什么。听上去你可能只需要最后一个标志——除非你也想隐藏导航——那么你可能需要设置最后两个标志。

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
    );
}

onWindowFocusChanged( ... )然后通过像这样覆盖方法来获取并实现这个新方法。

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

    if (hasFocus) {
        hideSystemUI();
    }
}

也许您甚至想尝试在应用程序的哪些情况或状态下使用哪些标志添加一些逻辑。

与往常一样,另一个很棒的资源是 Google 的文档。这里有关于控制系统 UI 可见性的好信息。

于 2019-03-19T21:45:32.137 回答
0

在这里查看答案。我们无法阻止奥利奥中的状态栏。只能使用服务关闭。

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

于 2019-05-24T12:32:09.417 回答