Как изменить цвет по умолчанию только для одного XML/Activity

Основываясь на моем вопросе, как изменить синий цвет (отмечен) на белый, не скрывая состояние батареи и Wi-Fi. Ниже текущий XML выглядит так

Как изменить цвет по умолчанию только для одного XML/Activity

Кто-нибудь может помочь?

Состояние батареи, время, Wi-Fi все отображается белым цветом, что делает фон белым, и эти вещи не будут видны.

Rajnish suryavanshi 22.05.2019 06:08
0
1
187
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если вы хотите изменить цвет строки состояния программно (и при условии, что на устройстве установлена ​​ОС 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, тогда он будет темным

Другие вопросы по теме