Строка состояния Цвет не отображается - 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));
}