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