Я разрабатываю приложение для Android. В моем приложении я устанавливаю цвет панели действий в соответствии с цветовым кодом, который поступает с сервера. Установка цвета фона прекрасна и работает. Но я также хочу изменить цвет строки состояния в соответствии с цветовым кодом панели действий. Я хочу затемнить цвет и установить его в строке состояния, как показано ниже.Динамическая настройка цвета строки состояния в 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));
}
}
Но за это время мне нужно изменить цвет динамически. Я тестировал значение mock, но не работал. См. Мой код ниже.
В деятельности 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));
}
}
}
Это то, что я получаю:
Как вы можете видеть в строке состояния цвет не меняется. Как изменить цвет панели состояния, затемняющий цвет панели действий?
Вы попробуйте установить такой же цвет, чтобы StatusBar, как у ActionBar? Если да, вы можете это сделать. Проверьте https://material.google.com/style/color.html#color-color-palette, набор ActionBar 500 и StatusBar задайте 700 цветов. –
Нет. Затемнить цвет панели действий. Затем установите строку состояния. –
Мой цветовой код является динамическим. Исходя из сервера. –