Я пытаюсь установить цвета строки состояния, но у меня проблемы с другим уровнем API.
Я хочу темный цвет значка и желтый фон. Я установил стиль версии, но он не настраивается для уровня API 21. Посмотрите скриншот, отмеченный красным.
Вот код
<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>
<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>
То, что вы хотите сделать, возможно для 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);
}
}
Да, вы можете сделать это для> 23. Код, который я предоставил, будет делать то же самое динамически, что и вы уже делаете. Единственное отличие состоит в том, что для API менее 23 вы можете определить поведение, которое вы хотите сделать, или оставить его по умолчанию для Android. Это сделает это во время выполнения
Понимаю. Значит, мы можем менять цвета значков только через api>23? что будет делать код, который вы предоставили?