在 Android API 30 中,可以使用以下代码示例来实现透明状态栏:
styles.xml
文件中添加一个新的主题,并设置 windowTranslucentStatus
属性为 true
:
AndroidManifest.xml
文件中,将应用的主题设置为新添加的主题:
...
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
// 设置状态栏透明
WindowInsetsControllerCompat windowInsetsControllerCompat = new WindowInsetsControllerCompat(getWindow(), getWindow().getDecorView());
windowInsetsControllerCompat.setSystemBarsAppearance(APPEARANCE_LIGHT_STATUS_BARS, APPEARANCE_LIGHT_STATUS_BARS);
} else {
// 设置状态栏透明
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 设置状态栏字体颜色为黑色
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
请注意,这种方法仅在 API 30 及以上的设备上生效。对于 API 30 以下的设备,仍需要使用传统的透明状态栏方法。