Цвет значков панели состояния Android

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

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

Благодарю.

РЕДАКТИРОВАТЬ:

Новое в предварительном просмотре M: windowLightStatusBar. Перевернув это в своей теме, вы увидите, что система использует темный передний план, полезный для более светлых полос состояния. Обратите внимание, что в предварительном просмотре M есть ошибка, в которой значки уведомлений остаются белыми, а значки состояния системы правильно меняются на полупрозрачный черный.

От: Роман Нурик Введите описание изображения здесь

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

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

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

Временное решение

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

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

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

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

Введите описание изображения здесь

@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>