Я хочу изменить цвет выделенной полосы в Android Studio:
Как я могу это сделать?
Вы можете изменить его, установив 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);
Строка состояния - системное окно, принадлежащее операционной системе.
На устройствах до 5.0 для Android приложения не имеют права изменять свой цвет, поэтому это не то, что библиотека AppCompat
может поддерживать более старые версии платформы. Лучшим AppCompat
может служить поддержка окраски ActionBar
и других общих виджетах пользовательского интерфейса в приложении.
На устройствах после 5.0 для Android
Изменение цвета строки состояния также требует установки двух дополнительных флагов в окне; вам нужно добавить флаг 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));
Вы также можете добавить эти строки кода в основное действие
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="android:statusBarColor">@color/black</item>
<item name="colorPrimaryDark">@color/your_color</item>
будет отображаться только в Lollipop и больше, чем Lollipop (API). Постскриптум вам необходимо иметь Theme.AppCompat в качестве основной/основной темы
изменение цвета строки состояния доступно только для 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. Элемент colorPrimaryDark будет использоваться для цвета строки состояния вашего приложения
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
Примечание. - Цвет строки состояния поддерживается на уровне api 19 или 21 и выше уровня api.
Проверьте эту ссылку: изменить цвет строки состояния