Android 决定状态栏使用哪种背景色

Android 决定状态栏使用哪种背景色,android,android-5.0-lollipop,android-toolbar,Android,Android 5.0 Lollipop,Android Toolbar,由于我已经为动作栏的背景色指定了一个十六进制值,我发现决定使用哪个十六进制值作为状态栏的背景色有点困难。当指定操作栏的背景颜色时,是否有任何工具可以帮助为状态栏找到合适的背景颜色 ActionBar actionBar = getSupportActionBar(); actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#E32017"))); 你只能从棒棒糖(API等级21)开始这样做 将状态栏上的颜色设置为

由于我已经为动作栏的背景色指定了一个十六进制值,我发现决定使用哪个十六进制值作为状态栏的背景色有点困难。当指定操作栏的背景颜色时,是否有任何工具可以帮助为状态栏找到合适的背景颜色

ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#E32017")));

你只能从棒棒糖(API等级21)开始这样做


将状态栏上的颜色设置为与ActionBar颜色最接近的颜色:

private String actionBarColor = "#AC6363";
操作栏上设置背景色

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor)));
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setStatusBarColor(getFactorColor(Color.parseColor(actionBarColor), 0.8f));
}
private int getFactorColor(int color, float factor) {
    float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    hsv[2] *= factor;
    color = Color.HSVToColor(hsv);
    return color;
}
要设置状态栏颜色:在活动的创建上:

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor)));
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setStatusBarColor(getFactorColor(Color.parseColor(actionBarColor), 0.8f));
}
private int getFactorColor(int color, float factor) {
    float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    hsv[2] *= factor;
    color = Color.HSVToColor(hsv);
    return color;
}
获取因子颜色

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor)));
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setStatusBarColor(getFactorColor(Color.parseColor(actionBarColor), 0.8f));
}
private int getFactorColor(int color, float factor) {
    float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    hsv[2] *= factor;
    color = Color.HSVToColor(hsv);
    return color;
}

完成

很酷。谢谢有没有可能将状态栏图标的颜色更改为深色?@MacaronLover,没有兄弟,根据指导原则,这是不可能的。查看此以了解更多信息。谢谢。@MacaronLover,很高兴帮助你。:)@MacaronLover,您在操作栏上设置了颜色,但在状态栏上没有设置。@MacaronLover,没有,对不起。我会尽我最大的努力让你知道sameDo你知道如何用正确的答案和代码来解决这个问题吗?