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

Android:根据深色/浅色主题动态设置TextView背景

问题解决:动态设置TextView背景后主题切换不生效

你当前的问题出在直接获取了固定颜色值,没有关联主题的动态资源。resources.getColor(R.color.black)拿到的是硬编码的黑色值,不管主题怎么切换,这个值不会变化。

解决步骤:

  • 先在主题对应的颜色文件中定义动态颜色
    在res/values/colors.xml(浅色主题)里添加:

    <color name="title_background">#FFFFFF</color>
    

    在res/values-night/colors.xml(深色主题)里添加:

    <color name="title_background">#000000</color>
    

    (颜色值可根据你的实际需求调整)

  • 用支持主题的方式获取颜色并设置背景
    替换原来的代码为:

    txtTitle.setBackgroundColor(ContextCompat.getColor(this, R.color.title_background))
    

    如果你使用Java:

    txtTitle.setBackgroundColor(ContextCompat.getColor(this, R.color.title_background));
    

    ContextCompat.getColor()会自动根据当前主题加载对应的颜色资源。

  • 确保主题切换时能触发更新
    如果你的Activity没有配置android:configChanges="uiMode",主题切换时Activity会自动重启,重新执行颜色设置代码;如果配置了该属性,需要在onConfigurationChanged()方法里重新调用背景设置代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:52:04