Я хочу изменить цвет выделенной панели в Android Studio:
Как я могу это сделать?
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);
Изменение цвета строки состояния доступно только для 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>
Строка состояния - это системное окно, принадлежащее операционной системе. На устройствах 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));
Добавьте цвет строки состояния в свой стиль и готово
<item name="android:statusBarColor">@color/black</item>
Это для уровня API 21+
Если вы используете настраиваемую панель действий, вы можете попробовать это.
<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
Чтобы изменить цвет для определенного действия, просто используйте
app: statusBarBackground = "@ color / colorPrimaryDark"
Или любое другое значение цвета вместо @color/colorPrimaryDark
в файле макета почты вашего желаемого действия в теге родительского макета, как в моем случае по умолчанию это был CoordinatorLayout
, который является родительским для всех (все остальные макеты должны быть в пределах этот CoordinatorLayout, иначе он может не работать)
Надеюсь, это поможет, в моем случае это сработало, хотя я не совсем уверен, как это сделать.
Вы также можете добавить эти строки кода в основное действие
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
}
<item name="colorPrimaryDark">@color/your_color</item>
Будет отображаться только на устройствах Lollipop и более поздних версиях, чем устройства Lollipop (API). P.S. вам нужно иметь Theme.AppCompat в качестве базовой / основной темы
Примечание. - Цвет строки состояния поддерживается на уровне API 19 или 21 и выше.
Проверьте эту ссылку: изменить цвет строки состояния а>
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.