【问题标题】: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);
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      相关资源
      最近更新 更多