调暗系统栏(已弃用)

本课程介绍如何在 Android 4.0 (API 级别 14) 及更高版本上调暗系统栏(即状态栏和导航栏)。Android 在更早的版本中不提供内置的调暗系统栏的方法。

使用此方法时,内容不会重新调整大小,但系统栏中的图标会视觉上淡化。一旦用户触摸屏幕的状态栏或导航栏区域,两个栏都会完全可见。此方法的优点是系统栏仍然存在,但其细节被隐藏,从而在不牺牲轻松访问系统栏的情况下创建沉浸式体验。

调暗状态栏和导航栏

您可以使用 SYSTEM_UI_FLAG_LOW_PROFILE 标志来调暗状态栏和导航栏,如下所示

Kotlin

// This example uses decor view, but you can use any visible view.
activity?.window?.decorView?.apply {
    systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE
}

Java

// This example uses decor view, but you can use any visible view.
View decorView = getActivity().getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE;
decorView.setSystemUiVisibility(uiOptions);

一旦用户触摸状态栏或导航栏,此标志将被清除,导致系统栏不再调暗。标志被清除后,如果想再次调暗系统栏,您的应用需要重新设置此标志。

图 1 显示了一个图库图片,其中导航栏已被调暗(请注意,图库应用完全隐藏了状态栏;它没有调暗状态栏)。请注意,导航栏(图片右侧)上有微弱的白色圆点代表导航控件

system bars

图 1. 已调暗的系统栏。

图 2 显示了相同的图库图片,但显示了系统栏

system bars

图 2. 可见的系统栏。

显示状态栏和导航栏

如果您想以编程方式清除使用 setSystemUiVisibility() 设置的标志,可以按如下方式进行

Kotlin

activity?.window?.decorView?.apply {
    // Calling setSystemUiVisibility() with a value of 0 clears
    // all flags.
    systemUiVisibility = 0
}

Java

View decorView = getActivity().getWindow().getDecorView();
// Calling setSystemUiVisibility() with a value of 0 clears
// all flags.
decorView.setSystemUiVisibility(0);