You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio深色模式下ActionBar颜色无法修改的问题求助

解决深色模式下ActionBar颜色未更新的问题

问题描述

我在Android Studio中尝试修改应用的ActionBar在深色模式下的颜色,已在values目录添加night/colors.xml文件,修改night/themes.xml中的颜色值替换原黑色,但仅部分文本颜色变化,ActionBar颜色未改变,请问该如何解决?

相关代码

night/themes.xml

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.TestApp" 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">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
</resources>

night/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="purple_200">#FFBB86FC</color>
    <color name="purple_500">#239090</color>
    <color name="purple_700">#239090</color>
    <color name="teal_200">#FF03DAC5</color>
    <color name="teal_700">#FF018786</color>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
    <color name="blue">#239090</color>
    <color name="grey">#242B2E</color>
</resources>

(注:上述代码中已将颜色改回黑色)

常规themes.xml

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.TestApp" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
</resources>

解决方案

方法一:显式指定ActionBar背景色

Theme.MaterialComponents.DayNight.DarkActionBar父主题在深色模式下会默认使用深色背景,可能覆盖你设置的colorPrimary。直接添加ActionBar背景属性即可:
在night/themes.xml的Theme.TestApp样式中加入:

<!-- 针对原生ActionBar -->
<item name="actionBarBackground">@color/purple_700</item>
<!-- 针对Material Components Toolbar -->
<item name="toolbarStyle">@style/CustomDarkToolbar</item>

同时在night/themes.xml中定义自定义Toolbar样式:

<style name="CustomDarkToolbar" parent="Widget.MaterialComponents.Toolbar.Primary">
    <item name="background">@color/purple_700</item>
</style>

方法二:改用自定义Toolbar(更灵活)

如果希望完全控制ActionBar样式,建议改用NoActionBar主题,手动添加Toolbar:

  1. 修改night/themes.xml的父主题:
<style name="Theme.TestApp" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- 保留原有属性不变 -->
</style>
  1. 在Activity布局中添加MaterialToolbar:
<com.google.android.material.appbar.MaterialToolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:titleTextColor="?attr/colorOnPrimary" />
  1. 在Activity的onCreate方法中绑定Toolbar:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    MaterialToolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
}

方法三:清理缓存并重建项目

Android Studio的缓存可能导致资源未及时更新,执行以下步骤:

  • 点击菜单栏Build → Clean Project
  • 接着点击Build → Rebuild Project
  • 重启Android Studio后重新运行应用

内容的提问来源于stack exchange,提问作者Marfog509

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:55:42