如何动态定义Theme的attr值

时间:2014-06-17 15:11:48

标签: android dynamic android-theme android-styles

让我澄清一下这个问题。 我有这样的主题

<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的文本颜色)。我可以做吗?我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

对于简单的解释,您可以使用主题进行。

您必须定义属性

<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);

我希望这可以帮到你