Если вы хотите изменить цвет строки состояния программно (и при условии, что на устройстве установлена ОС Android 5.0 или выше), вы можете использовать Window.setStatusBarColor()
Просто попробуйте сделать:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.BLUE);
}
Вы можете сделать это программно или обновить цвет XML в соответствии с вашим выбором.
Использование XML:
Вы можете создать новую тему в res/values/styles.xml, где вы измените «colorPrimaryDark», который является цветом строки состояния:
<style name = "AppTheme.BlueStatusBar" parent = "Theme.AppCompat.Light.DarkActionBar">
<item name = "colorPrimaryDark">@color/colorBlue</item>
</style>
И измените тему активности в AndroidManifest.xml на ту, которую вы хотите, в следующей активности вы можете изменить цвет на исходный, выбрав исходную тему:
<activity
android:name = ".XActivity"
android:theme = "@style/AppTheme.BlueStatusBar" >
<intent-filter>
<action android:name = "android.intent.action.MAIN" />
<category android:name = "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Вот как должен выглядеть ваш файл res/values/colors.xml:
<?xml version = "1.0" encoding = "utf-8"?>
<resources>
<color name = "colorPrimary">#3F51B5</color>
<color name = "colorPrimaryDark">#303F9F</color>
<color name = "colorAccent">#c6d6f0</color>
<color name = "colorBlue">#757575</color>
</resources>
Программно:
В Котлине: всего одна строка.
window.statusBarColor = ContextCompat.getColor(this, R.color.colorBlue)
В Java:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().setStatusBarColor(getResources().getColor(R.color.colorBlue, this.getTheme()));
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setStatusBarColor(getResources().getColor(R.color.colorBlue));
}
Вот фрагмент кода, в котором вы можете изменить цвет строки состояния и цвет объекта или текста из строки состояния.
добавьте приведенный ниже код ваши значения-v21/styles.xml, это будет работать с леденец на палочке (5.0)
<resources>
<!-- Theam for activity or application where ever you want to change color of your status bar -->
<style name = "AppTheme" parent = "Theme.AppCompat.Light">
<item name = "colorPrimary">@color/color_primary</item>
<item name = "colorPrimaryDark">@color/color_secondary</item>
<item name = "colorAccent">@color/color_accent</item>
<item name = "android:statusBarColor">@color/colorPrimaryDark</item>
<item name = "android:windowLightStatusBar">true</item>
</style>
</resources>
statusBarColor
измените цвет строки состояния, а windowLightStatusBar изменит цвет текста или объекта в строке состояния, например, если вы установите windowLightStatusBar
как true, тогда шрифт и объект будут белыми или светлыми, как если бы вы установили false, тогда он будет темным
Состояние батареи, время, Wi-Fi все отображается белым цветом, что делает фон белым, и эти вещи не будут видны.