Подтвердить что ты не робот

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

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

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

Спасибо.

EDIT:

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

from: Роман Нурик Google+ post введите описание изображения здесь

4b9b3361

Ответ 1

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

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

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

Обход

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

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

Ответ 2

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

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

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

Ответ 3

@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);
    }
}

Ответ 4

если уровень API меньше 23, чем вы должны использовать его таким образом. это работало для меня, объявляя это под v21/style.

<item name="colorPrimaryDark" tools:targetApi="23">@color/colorPrimary</item>
        <item name="android:windowLightStatusBar" tools:targetApi="23">true</item>