2014-05-08 41 views
1

我正在研究我的應用程序(光照和黑暗)的「動態更改主題」功能。Android - 如何在不同主題中指定特定視圖的特殊屬性

我有一些特殊的自定義小部件,它使用特殊的顏色。我也想在主題屬性中指定這個小部件的顏色。

例如,我要定像

<item name="MySpecialTextColor">@color/white</item> 

在佈局中的主題屬性,我怎麼可以設置TextView的文本顏色?

<TextView 
... 
android:color="XXXX????" 
... 
/> 

我該如何做到這一點?

回答

1

首先,在/res/values/colors.xml定義兩種顏色:

<resources> 
    <!-- ActionBar--> 
    <color name="MySpecialTextColorLight">@color/white</color> 
    <color name="MySpecialTextColorDark">@color/black</color> 
<resources> 

然後在/res/values/attrs.xml定義了一個獨特的名稱的屬性:

<resources> 
    <attr name="mytheme_text_color" format="color"/> 
</resources> 

接下來,在你的兩個主題,該屬性定義值,如:

<resources> 
    <style name="MyTheme" parent="android:Theme"> 
     <item name="mytheme_text_color">@color/MySpecialTextColorDark</item> 
    </style> 

    <style name="MyTheme.Light" parent="android:Theme.Light"> 
     <item name="mytheme_text_color">@color/MySpecialTextColorLight</item> 
    </style> 
</resources> 

最後,使用引用屬性y你定義爲指代這些顏色。在你的情況下,你使用:

<TextView 
    ... 
    android:color="?attr/mytheme_text_color" 
    .../> 
+0

太棒了!我會稍後嘗試和反饋。 – Robin

+0

爲您投票!它像一個魅力! – Robin

+0

嗨,一些更新。似乎?attr/xxx不能用於選擇器,任何想法? – Robin

相關問題