FLAG_TRANSLUCENT_STATUS 标志已弃用,因此建议使用更现代的 WindowInsetsController API 来设置状态栏透明度。您可以使用以下代码示例来设置状态栏不透明并覆盖状态栏区域:
// 设置布局时让系统自动调整状态栏区域
ViewCompat.setOnApplyWindowInsetsListener(rootView) { _, insets ->
// 移除状态栏内边距
rootView.setPadding(0, 0, 0, insets.systemWindowInsetBottom)
// 偏移整个布局以使其覆盖状态栏区域
insets
}
// 使用 WindowInsetsController API
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.insetsController?.setSystemBarsAppearance(
0,
WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
)
} else {
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR or
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}