#android #android-styles
#Android #android-стили
Вопрос:
Я пытаюсь установить цвета строки состояния, но у меня проблемы с другим уровнем api.
Я хочу темный цвет значка и желтый фон. Я установил стиль версии, но он не настроен для уровня API 21. Пожалуйста, взгляните на скриншот, выделенный красным.
Вот код
v23styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowBackground">@color/colorPrimaryBackground</item>
<item name="android:textColor">@color/colorPrimaryText</item>
<item name="android:windowLightStatusBar">true</item>
</style>
По умолчанию styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowBackground">@color/colorPrimaryBackground</item>
<item name="android:textColor">@color/colorPrimaryText</item>
</style>
Ответ №1:
То, что вы хотите сделать, возможно для api> 23, Попробуйте следующий код:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
View decor = getWindow().getDecorView();
if (shouldChangeStatusBarTintToDark) {
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} else {
// We want to change tint color to white again.
// You can also record the flags in advance so that you can turn UI back completely if
// you have set other flags before, such as translucent or full screen.
decor.setSystemUiVisibility(0);
}
}
Комментарии:
1. Я вижу. Таким образом, мы можем изменить цвета значков только api> 23? что будет делать предоставленный вами код?
2. Да, вы можете сделать это для > 23. Предоставленный мной код будет динамически выполнять то же самое, что вы уже делаете. Единственное отличие заключается в том, что для api менее 23 вы можете определить поведение, которое вы хотите сделать, или сохранить его по умолчанию для Android. Это сделает это во время выполнения