本课程介绍如何在 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);