如何在安卓 Q 上隐藏状态栏?

3

我在Android Q上隐藏状态栏时遇到了问题。当我在分屏视图中隐藏它时,它会变成白色,而不是黑色。但如果我不在分屏视图中,则一切正常。

我的操作方法:

public void hideSystemUI() {
    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 // hide nav bar
                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE);
}

这只是一个Bug吗,还是我该使用其他方法?我尝试了官方文档中的方法,但效果很糟糕,进度条仍然是白色。

注意:问题在于进度条是白色的,不是它没有隐藏,而是在分屏模式下。全屏不是一个选项,我需要动态隐藏它。这仅适用于Q版本!这不是重复内容,请仔细阅读。

1个回答

1

@Abhinav的回答是正确的,但如果您想使用官方文档,您应该使用setSystemUiVisibility()。像这样:

View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
ActionBar actionBar = getActionBar();
actionBar.hide();

此外,将主题设置在你的styles.xml文件中,而不是清单文件中。像这样:

<item name="android:windowFullscreen">true</item>

将以下代码添加到您的样式中。
如需更多信息,请查看此链接:https://developer.android.com/training/system-ui/status 如果您仍支持API 16及以下版本,请使用@Abhinav的代码。它检查了两种情况。否则,请使用此处列出的代码。
如果您想隐藏工具栏,请尝试此代码:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowFullscreen">true</item>
</style>

将此代码粘贴到您的styles.xml文件中。如果您想要使用Dark,请用Dark替换Light并删除NoActionBar

那不起作用。正如我所提到的,我尝试了官方文档中的方法。在 Q 上,这个栏仍然是白色的。问题在于它是白色的,而不是我不知道如何隐藏。 - VolodymyrH
你的意思是它是白色的吗?就像是隐藏了但是白色的? - Gaurav Mall
试试我的修改,可能会有帮助。 - Gaurav Mall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接