Android statusbar иконки цвет



мне было интересно, можно ли изменить строку состояния иконы цвета (не цвет строки состояния,colorPrimaryDark)
enter image description here
Допустим, я хочу эту строку состояния с:
<item name="colorPrimaryDark">@android:color/white</item>



и значки в черный, это возможно?



спасибо.



EDIT:




новое в M developer preview: windowLightStatusBar. Включаю это
в вашей теме говорится, что система использует темный передний план, полезен
более светлые цветные строки состояния. Обратите внимание на предпросмотр м, кажется, есть ошибка
где значки уведомлений остаются белыми, а значки состояния системы
правильно измените на полупрозрачный черный.




от: Роман Нурик Google+ post
enter image description here

892   5  

5 ответов:

не с Lollipop. Начиная с Android 5.0, в руководстве говорится:

значки уведомлений должны быть полностью белый.

даже если это не так, система будет рассматривать только альфа-канал вашего значка, делая их белыми

решение

единственный способ иметь цветной значок на леденец, чтобы опустить targetSdkVersion значения <21, но я думаю, что вам лучше следовать рекомендациям и использовать белые значки только.

Если вы все же решите, что хотите цветные значки, вы можете использовать DrawableCompat.setTint метод из новой библиотеки поддержки v4.

да, можно изменить его на серый (без пользовательских цветов), но это работает только с API 23 и выше вам нужно только добавить это в свои значения-v23/styles.xml

<item name="android:windowLightStatusBar">true</item>

enter image description here

@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

    Ничего не найдено.