Строка состояния Цвет не отображается - 5.0 Lollipop Android Studio: (AppCompat-v7: r21)

Я использую библиотеку поддержки AppCompat-v7:21.0.0 для Android 5.0 Lollipop в Android Studio. Моя проблема заключается в том, что цвет строки состояния, который можно изменить, установив colorPrimaryDark в файле values/styles.xml, отображается как черный, как в предварительном просмотре макета, так и в эмуляторе.

Итак, что случилось? Я что-то упускаю? Пожалуйста, дайте мне знать. Спасибо.

РЕДАКТИРОВАТЬ: Я знаю, что изменение цвета строки состояния в версиях Pre-Lollipop невозможно. Предварительный просмотр редактора макета XML и мой эмулятор установлены на уровень API 21 (5.0 Lollipop). Но в строке состояния все еще не цвет, который я установил в colorPrimaryDark. Я пробовал делать statusBarColor в styles.xml, но безрезультатно. Он по-прежнему черный.

ТАКЖЕ: Я увидел один из ответов на аналогичный вопрос, где они посоветовали мне поставить мой minSdkVersion на 21. Я пробовал это, но это не сработало. И я хочу, чтобы мое приложение запускалось на устройствах с уровнем API 15 и выше.

Ответ 1

Прочтите это: для этого в окне должно быть нанесено фоновые рисунки системной панели с помощью

android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS

но

android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS

не следует устанавливать (Источник)

В случае, если вы не знаете, как добавить этот флаг:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

Ответ 2

Это сработало для меня:

   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        getWindow().setStatusBarColor(getResources().getColor(R.color.some_color));
    }

Ответ 3

Установили ли целевую версию SDK значение 21? У меня была такая же проблема, когда я оставил целевую версию SDK до 19. Вы можете оставить минимальный SDK на что-нибудь ниже.

И, конечно же, вам нужно наследовать нужную тему и убедиться, что ваша активность использует ее.

Ответ 4

Проверьте, редактируете ли вы styles.xml в папке values-v21. Если вы установите версию SDK на 21, то она не будет искать styles.xml в папке values (но она должна это сделать).

enter image description here

Ответ 5

test on my nexus7 5.1.1

установить в style.xml v21/v22 не работает

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/holo_red_dark</item>

но

установлено в действие

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    getWindow().setStatusBarColor(getResources().getColor(android.R.color.holo_red_dark));
}

работает для меня

Ответ 6

Изменение цвета строки состояния в пред-Lollipop (5.0) невозможно, установив colorPrimaryDark. См. в этой статье.

На старых платформах AppCompat эмулирует цветную тематику, где это возможно. На данный момент это ограничивается окраской панели действий и некоторых виджетов.

Ответ 7

В моем случае values-v21/styles.xml содержала следующую строку, которая переопределяет цвет строки состояния, определенный в values/style.xml, с помощью colorPrimaryDark:

<item name="android:statusBarColor">@android:color/transparent</item>

Удаление этого сработало для меня.

Ответ 8

В v22-appcompat они (Android) теперь добавили рендеринг цвета строки состояния в предварительном просмотре студии Android.

О времени... В любом случае, убедитесь, что ваша библиотека appcompat обновлена ​​до последней версии, которая равна v22.0. +.

Ура!

Ответ 9

В моем случае виновником была jfeinstein10/SlidingMenu библиотека. Я заменил библиотеку Android navigation drawer, и теперь она корректно отображает цвет строки состояния.

Ответ 10

Я работал над старым приложением и пытался преобразовать его в материальный. Код и все было прекрасно, но единственная ошибка, которая была у меня была, которая мешала строке состояния, тонированной нa >= устройства Lollipop, была "TargetSDKVersion" в build.gradle. Он был установлен менее чем за 21 год. Я изменил его на 21 и начал работать тонирование цвета.

Ответ 11

Это сработало для меня. Удалено цвет строки состояния из стилей. Добавьте флаг, а затем поместите нужный вам цвет

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    getWindow().setStatusBarColor(getResources().getColor(R.color.your_color));
}