Я хочу изменить цвет выделенной панели в Android Studio:

enter image description here

Как я могу это сделать?

30
Humty 6 Сен 2016 в 09:17

9 ответов

Лучший ответ

Вы можете изменить его, установив атрибут android:statusBarColor или android:colorPrimaryDark стиля, который вы используете для своего приложения, в styles.xml .

(android:statusBarColor наследует значение android:colorPrimaryDark по умолчанию)

Например (поскольку здесь мы используем тему AppCompat, пространство имен android опущено):

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimaryDark">@color/your_custom_color</item>
</style>

На уровне API 21+ вы также можете использовать Window.setStatusBarColor() из кода.

Из его документов:

Чтобы это вступило в силу, в окне должна отображаться системная панель. фоны с WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS и WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS нельзя устанавливать. Если цвет непрозрачный, рассмотрите возможность установки View.SYSTEM_UI_FLAG_LAYOUT_STABLE и View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN.

Чтобы установить эти флаги, вы можете сделать что-то вроде этого:

// getWindow() is a method of Activity
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
59
earthw0rmjim 4 Июн 2019 в 04:28

Изменение цвета строки состояния доступно только для Android выше леденца на палочке

1. вы можете программно изменить цвет строки состояния с помощью этой строки:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setStatusBarColor(ContextCompat.getColor(context, R.color.your_color));
}

2. это можно сделать с помощью анимации плавного перехода:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    int startColor = getWindow().getStatusBarColor();
    int endColor = ContextCompat.getColor(context, R.color.your_color);
    ObjectAnimator.ofArgb(getWindow(), "statusBarColor", startColor, endColor).start();
}

3. или вы можете добавить это в свой стиль темы в файле values / styles.xml. item colorPrimaryDark будет использоваться для цвета строки состояния вашего приложения

<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
5
codegames 10 Окт 2018 в 22:22

Строка состояния - это системное окно, принадлежащее операционной системе. На устройствах Android до 5.0 у приложений нет разрешения на изменение его цвета, поэтому это не то, что библиотека AppCompat может поддерживать для более старых версий платформы. Лучшее, что может сделать AppCompat, - это обеспечить поддержку раскраски ActionBar и других стандартных виджетов пользовательского интерфейса в приложении.

На устройствах Android более поздней версии, чем 5.0 , Изменение цвета строки состояния также требует установки двух дополнительных флагов в окне; вам нужно добавить флаг FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS и снять флаг FLAG_TRANSLUCENT_STATUS.

Window window = activity.getWindow();

// clear FLAG_TRANSLUCENT_STATUS flag:
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

// finally change the color
window.setStatusBarColor(activity.getResources().getColor(R.color.my_statusbar_color));
25
salik latif 6 Сен 2016 в 06:40

Добавьте цвет строки состояния в свой стиль и готово

<item name="android:statusBarColor">@color/black</item>

Это для уровня API 21+

16
Masoud Darzi 30 Сен 2020 в 15:42

Если вы используете настраиваемую панель действий, вы можете попробовать это.

<style name="AppThemeBrowser" parent="Theme.AppCompat.NoActionBar">
    <item name="android:statusBarColor">@color/colorPrimaryDark</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
</style>

Или, если вы используете AppTheme actionBar, вы можете попробовать этот

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    <item name="android:statusBarColor">@color/colorPrimaryDark</item>
     ------------------------------------

</style>

Надеюсь, что это поможет вам.

HappyCoding

1
Mukta 17 Июн 2020 в 14:18

Чтобы изменить цвет для определенного действия, просто используйте

app: statusBarBackground = "@ color / colorPrimaryDark"

Или любое другое значение цвета вместо @color/colorPrimaryDark в файле макета почты вашего желаемого действия в теге родительского макета, как в моем случае по умолчанию это был CoordinatorLayout, который является родительским для всех (все остальные макеты должны быть в пределах этот CoordinatorLayout, иначе он может не работать)

Надеюсь, это поможет, в моем случае это сработало, хотя я не совсем уверен, как это сделать.

0
Abhyam Gupta 25 Ноя 2020 в 21:26

Вы также можете добавить эти строки кода в основное действие

 if (Build.VERSION.SDK_INT >= 21) {
        getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.dark_nav)); // Navigation bar the soft bottom of some phones like nexus and some Samsung note series  
        getWindow().setStatusBarColor(ContextCompat.getColor(this,R.color.statusbar)); //status bar or the time bar at the top
      }
13
Faakhir 16 Ноя 2017 в 05:33
<item name="colorPrimaryDark">@color/your_color</item> 

Будет отображаться только на устройствах Lollipop и более поздних версиях, чем устройства Lollipop (API). P.S. вам нужно иметь Theme.AppCompat в качестве базовой / основной темы

4
Aman Grover 6 Сен 2016 в 06:21

Примечание. - Цвет строки состояния поддерживается на уровне API 19 или 21 и выше.
Проверьте эту ссылку: изменить цвет строки состояния

-5
Garf365 6 Сен 2016 в 07:10