参考博客:https://blog.csdn.net/qq_36982160/article/details/82350993
一张图了解android状态栏颜色划分
方法一:通过代码设置状态栏颜色
/**
* 状态栏相关工具类
*
*/
public class StatusBarUtils {
//设置Activity对应的顶部状态栏的颜色
public static void setWindowStatusBarColor(Activity activity, int colorResId) {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(activity.getResources().getColor(colorResId));
}
} catch (Exception e) {
e.printStackTrace();
}
}
//设置Dialog对应的顶部状态栏的颜色
public static void setWindowStatusBarColor(Dialog dialog, int colorResId) {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = dialog.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(dialog.getContext().getResources().getColor(colorResId));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
方法二:通过主题设置状态栏颜色
res->values->styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@android:color/holo_blue_bright</item>
<item name="colorPrimaryDark">@android:color/holo_blue_bright</item>
</style>
然后在布局的xml里面指定theme
android:theme="@style/AppTheme"
1:AndroidManifest.xml文件中的targetSdkVersion必须设置在 21 以上。
2.parent主题必须是 Theme.AppCompat 开头,兼容包下的主题,所以必须一用 v7 包