无法更改应用程序中操作栏的颜色 [关闭]

Posted

技术标签:

【中文标题】无法更改应用程序中操作栏的颜色 [关闭]【英文标题】:Unable to change the color of action bar in the app [closed] 【发布时间】:2021-09-15 08:43:56 【问题描述】:

https://drive.google.com/file/d/1fniw1q9lx2U8D5CblZHAdBrOl2Oais0T/view?usp=sharing

我想在黑暗模式下更改操作栏的颜色,正如您在我所附的图片中看到的那样,在“生日快乐”后面包含一个黑色操作栏!

【问题讨论】:

你能分享你的主题/风格 drive.google.com/file/d/1H3RLhxWxe5T3_BacBCkbsDMavt4QWPto/… 上面一个是manifest,第二个是theme 您的手机是否处于黑暗模式? 是的..我想在黑暗模式下改变 【参考方案1】:

对于Dark Modeandroid会查看下面目录下themes.xml文件中定义的样式和主题

res/values-night/themes.xml

默认情况下,Light Mode 中的默认操作栏将使用您在res/values/themes.xml 中定义的基本应用程序主题的colorPrimary。在你的情况下是@color/white

默认情况下,Dark Mode 中的默认操作栏将始终为黑色,并且不会使用在 res/values-night/themes.xml 中定义的 colorPrimary

解决方案: 我们需要强制操作栏使用我们夜间主题的colorPrimary 属性或来自colors.xml 的任何单独颜色。

1.如果你想依赖colorPrimay

使用 actionBarStyle 属性将此样式 Widget.MaterialComponents.ActionBar.Primary 应用于夜间主题内的操作栏

res/values-night/themes.xml

<resources xmlns:tools="http://schemas.android.com/tools">

    <!-- Base application theme. -->
    <style name="Theme.HappyBirthday" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_200</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/black</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_200</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>

        <!-- Applying style like this  -->
        <item name="actionBarStyle">@style/Widget.MaterialComponents.ActionBar.Primary</item>
    </style>
    
</resources>

2。如果你想使用与color.xml不同的颜色

res/values-night/themes.xml 内创建一个从Widget.MaterialComponents.ActionBar.Primary 扩展的新样式MyActionBarDarkStyle 用任何颜色覆盖background 属性 使用 actionBarStyle 属性将新样式应用于夜间主题中的操作栏

res/values-night/themes.xml

<resources xmlns:tools="http://schemas.android.com/tools">

    <!-- Base application theme. -->
    <style name="Theme.HappyBirthday" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_200</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/black</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_200</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>

        <!-- Applying the new style that is defined below  -->
        <item name="actionBarStyle">@style/MyActionBarDarkStyle</item>
    </style>

    <!-- Our new style for ActionBar -->
    <style name="MyActionBarDarkStyle" parent="Widget.MaterialComponents.ActionBar.Primary">
         <item name="background">@color/warm_yellow</item>
    </style>

</resources>

【讨论】:

【参考方案2】:

既然你说的是黑暗模式,你也需要处理一下。

首先。创建一个名为 values-night 的文件夹。

然后,您需要复制 colors.xml(从文件夹 values)并粘贴到文件夹 values-night 中。

最后,将colors.xml 处的颜色更改为values-night,就像暗模式一样。

【讨论】:

但是为什么要创建另一个文件夹,它已经包含 2 个主题,即一个用于暗色,另一个用于亮色...而且在亮色模式下颜色会发生变化,但在暗色下不会发生变化! @SarthakGupta 你能更新你的问题还包括你提到的文件吗 drive.google.com/drive/folders/… 这是我的全部作品! @SarthakGupta 我已经检查过了,因为文件夹已经创建。只需在该文件夹中复制color.xml。你明白吗? 为什么要复制兄弟.....因为一切都是默认给出的,我只是询问更改它的语法或代码

以上是关于无法更改应用程序中操作栏的颜色 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 iPhone 应用程序中状态栏的颜色? [复制]

UINavigationBar 无法更改颜色

如何更改主题更改时浮动操作按钮的颜色?

使用 AppCompat 更改操作栏的背景颜色

如何更改启动器中状态栏的颜色?

更改状态栏的颜色 [重复]