Intereting Posts
ImageView не поддерживает максимальную высоту и ширину Устройства Samsung Galaxy не могут использовать geolocation.getCurrentPosition Ошибка Android Studio: «Метод getText () должен быть вызван из потока пользовательского интерфейса, текущий вывод – рабочий Синхронизировать данные по ионной структуре и работать в автономном режиме NullPointerException, которое не указывает на какую-либо строку в моем коде Насколько велики должны значки Action Bar (Toolbar) в новом дизайне Android Material? Каковы механизмы IPC, доступные в ОС Android? Как использовать дополнительные * .so библиотеки на Android Studio и NDK Закрепить правильную интерпретацию процента преобразования CSS3 на Android Android маршрутизирует маршрут по карте с двумя POI-s Слабая хэшмап со слабыми ссылками на значения? Не удалось настроить Android с Ubuntu 11.10 Android Login – Лучшая реализация Google Maps v2 Маркер zOrdering – установить в начало Запустить службу на Android

Как изменить цвет строки состояния для соответствия приложению в Lollipop?

В новом обновлении lollipop я заметил, что с родными приложениями Google цвет строки состояния изменяется в соответствии с панелью действий приложения, которое вы используете. Я также вижу, что это приложение Twitter, поэтому я предполагаю, что это не единственный Google, который может это сделать.

Кто-нибудь знает, как это сделать, если это возможно?

Solutions Collecting From Web of "Как изменить цвет строки состояния для соответствия приложению в Lollipop?"

Чтобы изменить цвет строки состояния, используйте setStatusBarColor (цвет int) . Согласно javadoc, нам также нужно установить некоторые флаги в окне.

Рабочий фрагмент кода:

Window window = activity.getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.setStatusBarColor(ContextCompat.getColor(activity, R.color.example_color)); 

Имейте в виду, что в соответствии с инструкциями по дизайну материалов. Цвет панели состояния и цвет панели действий должны быть разными:

  • ActionBar должен использовать первичный цвет 500
  • StatusBar должен использовать основной цвет 700

Посмотрите на скриншот ниже:

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

Просто добавьте это в style.xml. ColorPrimary предназначен для панели действий, а colorPrimaryDark – для строки состояния.

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:colorPrimary">@color/primary</item> <item name="android:colorPrimaryDark">@color/primary_dark</item> </style> 

Эта картинка от разработчика android объясняет больше о цветовой палитре. Вы можете узнать больше об этой ссылке .

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

Другой способ установить цвет строки состояния – через style.xml .

Для этого создайте файл style.xml под папкой res / values-v21 с этим контентом:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppTheme" parent="android:Theme.Material"> <!-- darker variant for the status bar and contextual app bars --> <item name="android:colorPrimaryDark">@color/blue_dark</item> </style> </resources> 

Изменить: как указано в комментариях, при использовании AppCompat код отличается. В файле res / values ​​/ style.xml используйте вместо этого:

 <style name="Theme.MyTheme" parent="Theme.AppCompat.Light"> <!-- Set AppCompat's color theming attrs --> <item name="colorPrimary">@color/my_awesome_red</item> <item name="colorPrimaryDark">@color/my_awesome_darker_red</item> <!-- Other attributes --> </style> 

Чтобы установить цвет строки состояния, создайте файл style.xml под папкой res / values-v21 с этим контентом:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppBaseTheme" parent="AppTheme"> <item name="android:windowDrawsSystemBarBackgrounds">true</item> <item name="android:statusBarColor">@color/blue</item> </style> </resources> 

В устройствах Android для Android с Lollipop вы можете сделать это из SystemBarTintManager. Если вы используете студию Android, просто добавьте Systembartint lib в свой файл gradle.

 dependencies { compile 'com.readystatesoftware.systembartint:systembartint:1.0.3' ... } 

Тогда в вашей деятельности

 // create manager instance after the content view is set SystemBarTintManager mTintManager = new SystemBarTintManager(this); // enable status bar tint mTintManager.setStatusBarTintEnabled(true); mTintManager.setTintColor(getResources().getColor(R.color.blue)); 

Добавьте эту строку в стиле v21, если вы используете два стиля.

  <item name="android:statusBarColor">#43434f</item> 

Кроме того, если вы хотите различный цвет состояния для разных действий ( фрагментов ), вы можете сделать это с помощью следующих шагов (работа над API 21 и выше):

Сначала создайте values21/style.xml и поместите следующий код:

  <style name="AIO" parent="AIOBase"> <item name="android:windowDrawsSystemBarBackgrounds">true</item> <item name="android:windowContentTransitions">true</item> </style> 

Затем определите темы White | Dark в ваших values/style.xml как values/style.xml ниже:

  <style name="AIOBase" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/color_primary</item> <item name="colorPrimaryDark">@color/color_primary_dark</item> <item name="colorAccent">@color/color_accent</item> <item name="android:textColorPrimary">@android:color/black</item> <item name="android:statusBarColor" tools:targetApi="lollipop">@color/color_primary_dark </item> <item name="android:textColor">@color/gray_darkest</item> <item name="android:windowBackground">@color/default_bg</item> <item name="android:colorBackground">@color/default_bg</item> </style> <style name="AIO" parent="AIOBase" /> <style name="AIO.Dark" parent="AIOBase"> <item name="android:statusBarColor" tools:targetApi="lollipop">#171717 </item> </style> <style name="AIO.White" parent="AIOBase"> <item name="android:statusBarColor" tools:targetApi="lollipop">#bdbdbd </item> </style> 

Также не забудьте применить темы в вашем manifest.xml .