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

Kotlin Android App如何配置使用设备默认主题(支持动态取色)

Android 应用解除自定义主题、跟随系统默认主题并适配Android 12动态主题操作方案

1. 修改主题配置文件

首先清理模板自动生成的自定义主题配置:

  • 定位到项目资源目录下的两个主题文件:res/values/themes.xml(浅色模式配置)、res/values-night/themes.xml(深色模式配置)
  • 将两个文件中自定义应用主题的parent属性值替换为Theme.Material3.DayNight(如果需要保留默认顶部工具栏就用Theme.Material3.DayNight.ActionBar,不需要就用Theme.Material3.DayNight.NoActionBar,和原模板的ActionBar配置保持一致即可)
  • 删除两个主题标签内部所有自定义颜色配置项,包括模板默认生成的colorPrimary、colorPrimaryVariant、colorOnPrimary、colorSecondary等所有和紫色配色相关的属性,避免自定义值覆盖系统默认配色。

注意:如果项目使用的Material依赖版本低于1.6.0,也可以用Theme.MaterialComponents.DayNight作为父主题,后续通过代码动态注入Android 12的动态颜色即可。

2. 开启动态颜色适配

在自定义Application类的onCreate方法中加入如下代码,即可在Android 12及以上系统自动启用系统动态取色,低版本系统自动回退到系统默认的基础浅色/深色主题:

import com.google.android.material.color.DynamicColors

class MyApp: Application() {
    override fun onCreate() {
        super.onCreate()
        DynamicColors.applyToActivitiesIfAvailable(this)
    }
}
  • 如果没有自定义Application类,也可以直接在入口Activity的onCreate方法中,setContentView()调用之前加入DynamicColors.applyToActivityIfAvailable(this)实现单页面的动态颜色适配。
  • 记得在AndroidManifest.xml的application标签中配置name属性指向自定义的Application类,否则全局动态颜色配置不会生效。

3. 依赖版本校验

打开app模块下的build.gradle(模块级),确认Material依赖版本不低于1.5.0,低版本无法正常支持动态颜色特性,参考配置:

dependencies {
    implementation 'com.google.android.material:material:1.9.0'
    // 其他原有依赖保持不变
}

配置完成后重新编译安装应用即可:应用会自动跟随系统的浅色/深色模式切换,在Android 12及以上设备上会自动跟随系统壁纸提取的动态主题色变更控件、工具栏颜色,不会再显示模板默认的固定紫色配色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:18:15