要通过背景自动更改状态栏图标颜色,你可以使用以下步骤和代码示例来解决问题:
styles.xml
文件中,为你的主题添加以下属性:- true
这将告诉Android系统使用浅色状态栏图标和文字。
onCreate()
方法中,添加以下代码:if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
View decor = getWindow().getDecorView();
if (isColorDark(backgroundColor)) { // 判断背景颜色是否为暗色
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} else {
decor.setSystemUiVisibility(0);
}
}
这将根据背景颜色的明暗程度来设置状态栏图标和文字的颜色。
private boolean isColorDark(int color) {
double darkness = 1 - (0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color)) / 255;
return darkness >= 0.5;
}
这个方法将计算给定颜色的亮度值,并返回是否为暗色。
请注意,这种方法只适用于Android 6.0(Marshmallow)及更高版本的设备,因为android:windowLightStatusBar
属性只在这些版本的系统中可用。