无法更改应用程序中操作栏的颜色 [关闭]
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 Mode
,android会查看下面目录下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
。你明白吗?
为什么要复制兄弟.....因为一切都是默认给出的,我只是询问更改它的语法或代码以上是关于无法更改应用程序中操作栏的颜色 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章