Я знаю, что могу использовать colorPrimary
для определения цвета Toolbar
и colorPrimaryDark
для определения цвета строки состояния.
Я использую следующую тему
<!-- Base application theme. -->
<style name="Theme.Noteplus.Base.Brown" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimaryLight</item>
<item name="colorPrimaryDark">#ff0000</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
Одним из интересных атрибутов является то, что, когда я выдвигаю меню навигации, строка состояния автоматически становится прозрачной.
Во время выполнения иногда я хотел бы изменить цвет строки состояния.
setTitle("Recycler bin");
toolbar.setBackgroundColor(Color.BLUE);
getWindow().setStatusBarColor(Color.parseColor("#5694FF"));
Это будет выглядеть следующим образом
К сожалению, вызов setStatusBarColor
также приведет к потере атрибута прозрачности строки состояния, когда мы выскользнем из меню навигации.
Могу ли я узнать, как изменить цвет строки состояния во время выполнения, не теряя атрибут прозрачности? В моем случае, после изменения строки состояния на синий во время выполнения, когда я выдвигаю панель навигации, я хочу, чтобы атрибут прозрачности строки состояния сохранялся.
Обновление
Я пытался
private void setStatusBarColor(int color) {
if (Build.VERSION.SDK_INT >= 21) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(color);
}
}
Не помогает предоставить атрибут прозрачности, когда ящик навигации выдвигается.