本课介绍如何在 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 显示了一张导航栏已调暗的图库图片(请注意,“图库”应用会完全隐藏状态栏,而不会调暗状态栏)。请注意,导航栏(图片右侧)上有微弱的白点,表示导航控件:
图 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);