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

Android夜间模式下Toolbar主题颜色固定为默认值问题咨询

问题成因
  • 夜间主题父类配置错误:当前夜间主题的父类是Theme.AppCompat.Light,属于亮色主题父类,深色模式下系统会自动覆写部分基础颜色属性,导致自定义配置不生效。
  • 自定义属性colorToolbar未正确定义:样式中多次引用?attr/colorToolbar,如果没有在res/values/attrs.xml中提前声明该自定义属性,系统会无法解析该值,自动降级使用Material Design深色主题默认的背景色#121212。
  • ActionBar样式父类适配错误:配置的Theme.MyApp.ActionBarNight父类是Widget.AppCompat.Light.ActionBar.Solid.Inverse,属于亮色主题下的反色ActionBar样式,和深色主题的属性适配存在冲突,会导致背景配置被覆盖。
  • 冗余配置冲突:布局中没有引入自定义Toolbar,却配置了toolbarStyle相关属性,不同属性优先级冲突会导致ActionBar样式被覆盖。
修复方案
  1. 声明自定义属性(若保留colorToolbar引用需要这一步)
    在res/values/attrs.xml中添加如下代码:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="colorToolbar" format="color|reference" />
</resources>

如果不想用自定义属性,可以直接把所有?attr/colorToolbar替换为直接的颜色值比如#006BD5,跳过这一步即可。

  1. 修改夜间主题的父类与基础配置
    将night/themes.xml中的基础主题父类替换为深色主题对应父类,同时删掉冗余的Toolbar配置、显式开启ActionBar:
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.MyApp" parent="Theme.AppCompat.Dark">
    <item name="colorPrimary">#0069D3</item>
    <item name="colorPrimaryVariant">#0069D3</item>
    <item name="colorOnPrimary">#FFFFFF</item>
    <item name="colorOnSurface">#FFFFFF</item>
    <!-- Secondary brand color. -->
    <item name="colorSecondary">@color/teal_200</item>
    <item name="colorSecondaryVariant">@color/teal_200</item>
    <item name="colorOnSecondary">#FFFFFF</item>
    <!-- 显式开启ActionBar -->
    <item name="windowActionBar">true</item>
    <item name="windowNoTitle">false</item>
    <!-- Status bar color. -->
    <item name="android:statusBarColor">?attr/colorToolbar</item>
    <item name="actionBarStyle">@style/Theme.MyApp.ActionBarNight</item>
    </style>

<style name="Theme.MyApp.PopupOverlay" parent="ThemeOverlay.AppCompat.Dark">
    <item name="android:background">?attr/colorToolbar</item>
</style>

<style name="Theme.MyApp.ActionBarNight" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="background">?attr/colorToolbar</item>
    <item name="android:background">?attr/colorToolbar</item>
    <item name="titleTextStyle">@style/MyActionBarTitle</item>
</style>

<style name="MyActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/white</item>
</style>
</resources>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:57:03