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

如何通过XML设置跟随设备主题(深色/浅色)的Android View颜色

Android 适配设备主题的原生颜色值用法

在Android中,要实现跟随设备深色/浅色主题自动切换的颜色,无需自定义两套资源,直接使用系统提供的主题感知型属性即可,替代你之前用的固定dark/light颜色资源。

核心用法:引用系统主题属性

系统从API 29(Android 10)开始提供了一系列自动适配主题的颜色属性,直接通过?android:attr/xxx的方式引用:

  • 文本颜色类:

    • 主文本(对应你之前的primary_text_dark):
      android:textColor="?android:attr/textColorPrimary"
      
    • 次要文本:
      android:textColor="?android:attr/textColorSecondary"
      
    • 提示文本/占位符文本:
      android:textColor="?android:attr/textColorHint"
      

    这些属性会自动根据当前设备主题切换颜色——浅色主题下显示深色文本,深色主题下显示浅色文本,完全符合系统设计规范。

  • 背景色类:
    如果需要适配主题的背景,同样可以用系统属性:

    • 页面窗口背景:
      android:background="?android:attr/windowBackground"
      
    • 卡片背景:
      android:background="?android:attr/cardBackgroundColor"
      

低版本兼容说明

如果你的应用最低兼容版本低于API 29,可以通过以下方式兼容:

  1. 在res目录下创建values-night文件夹
  2. 在values/colors.xml和values-night/colors.xml中分别定义对应浅色/深色主题的颜色
  3. 在主题中自定义属性,再在布局中引用自己的属性

但优先推荐使用系统原生的?android:attr/xxx属性,既省心又能保证和系统主题风格统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:24:25