Прежде всего, это не дубликат, как в разделе Как изменить цвет фона строки состояния Android.
Как изменить цвет строки состояния, который должен быть таким же, как в панели навигации.
Я хочу, чтобы цвет строки состояния был таким же, как цвет панели навигации
android:statusBarColor
. Вы можете просто добавить его вvalues-v21/styles.xml
.Ответы:
В Android 5.0 Lollipop появилась тема Material Design, которая автоматически окрашивает строку состояния в зависимости от
colorPrimaryDark
значения темы.Это поддерживается на устройстве перед леденцом на палочке благодаря библиотеке support-v7-appcompat начиная с версии 21. Блог-пост о поддержке appcompat v21 от Криса Бэйнса
Узнайте больше о Материальной теме на официальном сайте разработчиков Android.
источник
Обновить:
Леденец:
Добавлено в API уровень 21
Android Lollipop принес с собой возможность изменить цвет строки состояния в вашем приложении для более захватывающего взаимодействия с пользователем и в соответствии с Google
Material Design Guidelines
.Вот как вы можете изменить цвет строки состояния, используя новый
window.setStatusBarColor
метод, представленный вAPI level 21
.Изменение цвета строки состояния также требует установки двух дополнительных флагов в окне; вам нужно добавить
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
флаг и очиститьFLAG_TRANSLUCENT_STATUS
флаг.Рабочий код:
...
Официальная ссылка для разработчика: setStatusBarColor (int)
Пример: материал-дизайн-везде
Блог Криса Банеса - appcompat v21: дизайн материала для устройств перед леденцом на палочке!
Для
transitionName
просмотра фона будетandroid:status:background
.источник
android:statusBarColor
в своемvalues-v21/styles.xml
файле настройки для androiddocs.com/training/material/theme.html примерно так<item name="android:statusBarColor">@color/primary_color</item>
Поместите это ваши значения-v21 / styles.xml, чтобы включить это на Lollipop:
источник
targeApi
атрибут, если хотите сохранить единый файл стиля. Прочитайте мой ответ для справки stackoverflow.com/a/48565459/4291272это очень простой способ сделать это без какой-либо библиотеки: если версия ОС не поддерживается - под kitkat - значит, ничего не произойдет. я делаю это шаги:
Затем я сделал этот метод:
Также вам нужны оба этих метода, чтобы получить панель действий и высоту строки состояния:
тогда единственное, что вам нужно, это строка для установки цвета строки состояния:
источник
Как сказал @Niels, вы должны поместить в values-v21 / styles.xml:
Но добавьте,
tools:targetApi="lollipop"
если вы хотите один файл styles.xml, например:источник
Что ж, решение Izhar было в порядке, но лично я стараюсь избегать кода, который выглядит так:
Также я не люблю дублировать код. В вашем ответе я должен добавить такую строку кода во все виды деятельности:
Итак, я взял решение Izhar и использовал XML, чтобы получить тот же результат: создать макет для StatusBar status_bar.xml
Обратите внимание на атрибуты высоты и высоты, которые будут установлены в значениях values-v19, values-v21 далее.
Добавьте этот макет в макет ваших действий, используя include, main_activity.xml:
Для панели инструментов добавьте атрибут верхнего поля:
В вашем appTheme style-v19.xml и styles-v21.xml добавьте windowTranslucent attr:
styles-v19.xml, v21:
И, наконец, в ваших измерениях Divens-v19, Dimens-v21 добавьте значения для topMargin панели инструментов и высоту statusBarHeight: dimensions.xml для меньшего размера, чем KitKat:
Высота строки состояния всегда составляет 24dp измерения-v19.xml для KitKat и выше:
Dimens-v21.xml для Lolipop, просто добавьте высоту, если необходимо:
Это результат для Jellybean KitKat и Lollipop:
источник
Вы можете использовать этот простой код:
Однострочник в Котлине:
Оригинальный ответ с проверкой версии Java и вручную:
источник
ContextCompat
. В Котлин тогда только это:window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)
Просто создайте новую тему в файле res / values / styles.xml, где вы измените «colorPrimaryDark», который является цветом строки состояния:
И измените тему действия в AndroidManifest.xml на ту, которую вы хотите, в следующем упражнении вы можете изменить цвет обратно на исходный, выбрав исходную тему:
Вот как должен выглядеть ваш res / values / colors.xml :
источник
Чтобы изменить цвет для вышеупомянутого lolipop просто добавьте это к вашему styles.xml
но помните , если вы хотите иметь светлый цвет для строки состояния, добавьте эту строку тоже
источник
С помощью этой функции вы можете изменить цвет строки состояния. работает на Android L означает API 21 и выше и нуждается в цветовой строке, такие как
"#ffffff"
.источник
У меня было это требование: программно изменить цвет строки состояния, оставив его прозрачным , чтобы панель навигации могла рисовать себя, перекрывая прозрачную строку состояния.
Я не могу сделать это с помощью API
Если вы отметите здесь в переполнении стека все до этой строки кода, установите прозрачность строки состояния на
Я могу управлять цветом и прозрачностью строки состояния следующим образом:
Android 4: вы мало что можете сделать, потому что вы не можете управлять цветом строки состояния из API ... единственное, что вы можете сделать, это установить строку состояния как полупрозрачную и переместить цветной элемент вашего пользовательского интерфейса под статусом бар. Для этого нужно поиграть с
в вашем основном макете. Это позволяет вам нарисовать макет под строкой состояния. Затем вам нужно поиграть с отступом в верхней части основного макета.
Android 5 и выше: вы должны определить стиль с
это позволяет навигационной панели перекрывать строку состояния.
Затем, чтобы изменить цвет, оставляя строку состояния прозрачной, необходимо установить цвет строки состояния с помощью
где BoxLayout определяется следующим образом
источник
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
. Во всяком случае, после нескольких дней поиска я нашел кое-что, что действительно работает (на данный момент проверено только на Lolllipop). СпасибоОтредактируйте colorPrimary в colors.xml в Values, чтобы цвет, которым вы хотите, чтобы была строка состояния. Например:
источник
Для изменения цвета строки состояния перейдите
res/values-v21/styles.xml
и на цвет строки состоянияисточник
Если вы хотите изменить цвет строки состояния программно (и при условии, что устройство имеет Android 5.0). Это простой способ изменить statusBarColor из любого Activity и очень простой метод, когда разные фрагменты имеют разный цвет строки состояния.
источник
Если вы хотите работать на Android 4.4 и выше, попробуйте это. Я имею в виду ответ Harpreet и эту ссылку. Android и прозрачная строка состояния
Сначала вызовите метод setStatusBarColored в методе onCreate в Activity (я поместил его в класс util). Я использую изображение здесь, вы можете изменить его, чтобы использовать цвет.
Перед:
После:
Цвет строки состояния был изменен, но навигационная панель отключена, поэтому нам нужно установить поле или смещение навигационной панели в методе onCreate.
Тогда строка состояния будет выглядеть следующим образом.
источник
Это то, что работало для меня в KitKat и с хорошими результатами.
источник
Еще одно решение:
источник
замените colorPrimaryDark на нужный вам цвет в файле res / values / styles.xml
источник