Я разрабатываю приложение для Android. В моем приложении я устанавливаю цвет панели действий в соответствии с цветовым кодом, поступающим с сервера. Настройка цвета фона в порядке и работает. Но я также хочу изменить цвет строки состояния в соответствии с цветовым кодом панели действий. Я хочу затемнить цвет и установить его в строке состояния, как показано ниже.
Я установил цвет строки состояния, подобный этому, в действии
private void setStatusBarColor()
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
// clear FLAG_TRANSLUCENT_STATUS flag:
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// finally change the color
window.setStatusBarColor(getResources().getColor(R.color.statusBarColor));
}
}
Но на этот раз мне нужно динамически менять цвет. Я протестировал значение фиктивного цвета, но не работал.
В методе активности onCreate
teamColorCode = "#EB6343";
if(teamColorCode!=null && !teamColorCode.isEmpty())
{
int color = Color.parseColor(teamColorCode);
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(color));
//set for action bar
float[] hsv = new float[3];
Color.colorToHSV(color,hsv);
hsv[2] *= 0.8f; // value component
color = Color.HSVToColor(hsv);
setStatusBarColor(color);
}
Как видите, я присвоил значение цветового кода переменной teamColorCode. Затем я попытался затемнить этот цвет и установить цвет строки состояния. вот как я устанавливаю цвет строки состояния.
private void setStatusBarColor(int color)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
// clear FLAG_TRANSLUCENT_STATUS flag:
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// finally change the color
if(color>0)
{
window.setStatusBarColor(color);
}
else{
window.setStatusBarColor(getResources().getColor(R.color.statusBarColor));
}
}
}
Вот что я получаю:
Как видите, цвет строки состояния не меняется. Как я могу изменить цвет строки состояния, затемнив цвет панели действий?