Цвет строки состояния Android на другом уровне API

Я пытаюсь установить цвета строки состояния, но у меня проблемы с другим уровнем API.

Я хочу темный цвет значка и желтый фон. Я установил стиль версии, но он не настраивается для уровня API 21. Посмотрите скриншот, отмеченный красным.

Цвет строки состояния Android на другом уровне API

Вот код

v23\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>
    <item name = "android:windowLightStatusBar">true</item>
</style>

Стили по умолчанию.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>
0
0
546
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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);
 }
}

Понимаю. Значит, мы можем менять цвета значков только через api>23? что будет делать код, который вы предоставили?

Code Lover 11.03.2019 11:57

Да, вы можете сделать это для> 23. Код, который я предоставил, будет делать то же самое динамически, что и вы уже делаете. Единственное отличие состоит в том, что для API менее 23 вы можете определить поведение, которое вы хотите сделать, или оставить его по умолчанию для Android. Это сделает это во время выполнения

Muhammad Saad Rafique 11.03.2019 11:59

Другие вопросы по теме