Android statusbar иконки цвет
мне было интересно, можно ли изменить строку состояния иконы цвета (не цвет строки состояния,colorPrimaryDark)

Допустим, я хочу эту строку состояния с:<item name="colorPrimaryDark">@android:color/white</item>
и значки в черный, это возможно?
спасибо.
EDIT:
новое в M developer preview: windowLightStatusBar. Включаю это
в вашей теме говорится, что система использует темный передний план, полезен
более светлые цветные строки состояния. Обратите внимание на предпросмотр м, кажется, есть ошибка
где значки уведомлений остаются белыми, а значки состояния системы
правильно измените на полупрозрачный черный.
от: Роман Нурик Google+ post

5 ответов:
не с Lollipop. Начиная с Android 5.0, в руководстве говорится:
значки уведомлений должны быть полностью белый.
даже если это не так, система будет рассматривать только альфа-канал вашего значка, делая их белыми
решение
единственный способ иметь цветной значок на леденец, чтобы опустить
targetSdkVersionзначения<21, но я думаю, что вам лучше следовать рекомендациям и использовать белые значки только.Если вы все же решите, что хотите цветные значки, вы можете использовать DrawableCompat.setTint метод из новой библиотеки поддержки v4.
@eOnOe ответил, как мы можем изменить оттенок строки состояния через xml. Но мы также можем изменить его динамически в коде:
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, чем вы должны использовать его таким образом. он работал для меня объявить это под v21 / style.
<item name="colorPrimaryDark" tools:targetApi="23">@color/colorPrimary</item> <item name="android:windowLightStatusBar" tools:targetApi="23">true</item>
задание
windowLightStatusBarдоtrueне работает с телефонами Mi, некоторыми телефонами Meizu, телефонами Blackview, WileyFox и т. д. Я нашел такой хак для устройств Mi и Meizu. Это не комплексное решение этой проблемы производительности, но, возможно, это было бы полезно для кого-то.и я думаю, было бы лучше сказать вашему клиенту, что окраска строки состояния (например) белый - это не очень хорошая идея. вместо использования различных хаков было бы лучше определить соответствующие
colorPrimaryDarkпо рекомендации

Comments