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
相关产品推荐
相关产品推荐

