如何仅在一种XML /活动中更改默认颜色

时间:2019-05-22 03:17:54

标签: android xml

根据我的问题,如何在不隐藏电池状态和wifi的情况下从蓝色(标记)更改为白色。下面是当前的XML外观

Main

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

如果您要通过编程方式更改状态栏颜色(并且前提是该设备具有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);
}

答案 1 :(得分:1)

您可以通过编程方式进行此操作,也可以根据自己的选择进行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));
}

答案 2 :(得分:1)

这是代码段引发,您可以在状态栏中更改状态栏颜色和对象或文本颜色

在下面的代码中添加您的值-v21 / styles.xml,这将在棒棒糖(5.0)中运行

edges

<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> 更改状态栏的颜色,并且windowLightStatusBar将从状态栏中更改文本或对象的颜色,例如如果将statusBarColor设置为true,则字体和对象将为白色或浅色好像您设置为false一样,它将是黑暗的