第一種是通過直接獲取值直接設(shè)置MyApplication的值
第二種是通過繼承Resources類诈闺,重寫getColor说庭,getDrawble等其他方法瓦戚,起到中間者的作用匪燕,將需要處理的處理完后返回處理的結(jié)果,其他的交給父類方法處理
第三種替換主題的方式诫龙,這種是通過在setContentView 之前setTheme析显,然后通過屬性的?demoColor獲取主題對(duì)應(yīng)的值
第一種比較渣,第二,第三種參考
http://stackoverflow.com/questions/33987678/programmatically-change-the-value-of-a-color-resource-obtained-from-api-response#
例子地址谷异,寫得比較渣分尸,僅供參考
https://gitee.com/fred_kang/ChangeStyleDemo
當(dāng)中遇到一個(gè)問題,getDrawable不僅需要調(diào)用父類的方法歹嘹,而且一定要用傳主題的那個(gè),不然會(huì)導(dǎo)致棧溢出
原因
還有關(guān)于箩绍?和@*
http://www.cnblogs.com/greatverve/archive/2011/12/27/Android-xml.html
**二.@*代表引用系統(tǒng)的非public資源。格式:@*android:type/name**
** **系統(tǒng)資源定義分public和非public尺上。public的聲明在:
<sdk_path>\platforms\android-8\data\res\values\public.xml
**@*android:type/name:**可以調(diào)用系統(tǒng)定義的所有資源
** @android:type/name:**只能夠調(diào)用publi屬性的資源材蛛。
注意:沒在public.xml中聲明的資源是google不推薦使用的。
**三.怎抛?代表引用主題屬性**
另外一種資源值允許你引用當(dāng)前主題中的屬性的值卑吭。這個(gè)屬性值只能在style資源和XML屬性中使用;它允許你通過將它們改變?yōu)楫?dāng)前主題提供的標(biāo)準(zhǔn)變化來改變UI元素的外觀马绝,而不是提供具體的值豆赏。例如:
android:textColor="?android:textDisabledColor"
還有一種看起來比較復(fù)雜的可以使用于webview的,主要是需要遍歷所有的view進(jìn)行主題的切換