【问题标题】:How to define attr value for Theme dynamically如何动态定义主题的属性值
【发布时间】:2014-06-17 15:11:47
【问题描述】:
让我澄清一下这个问题。
我有这样的主题
<style name="DefaultTheme" parent="android:Theme.Holo.Light">
<item name="android:textViewStyle">@style/DefaultTextViewStyle</item>
</style>
在哪里
<style name="DefaultTextViewStyle" parent="android:Widget.TextView">
<item name="android:textColor">?attrTextColor</item>
</style>
对于应用程序,我使用 DefaultTheme 主题,并且我想从代码中动态更改 attrTextColor 的值(以更改所有 TextView 的文本颜色)。我可以做吗?我该怎么做?
【问题讨论】:
标签:
android
dynamic
android-theme
android-styles
【解决方案1】:
为了简单的解释,你可以用主题来做。
你必须定义你的属性
<attr name="color_menu" format="color"/>
<attr name="color_text_main" format="color"/>
定义您的主题颜色(此处为蓝色和绿色)
<style name="AppTheme_green" parent="DefaultTheme">
<item name="color_menu">@color/very_dark_green</item>
<item name="color_text_main">@color/very_dark_gray3</item>
</style>
<style name="AppTheme_blue" parent="DefaultTheme">
<item name="color_menu">@color/very_dark_blue</item>
<item name="color_text_main">@color/very_dark_gray1</item>
</style>
现在您当前的活动可以在您的 AndroidManifest.xml 中只有一个主题
<activity
android:theme="@style/AppTheme_green"
>
...
</activity>
但您可以在活动中动态更改它
activity.setTheme(R.style.AppTheme_Blue);
希望对你有帮助