Android主题设置和切换

第一种是通过直接获取值直接设置MyApplication的值

第二种是通过继承Resources类,重写getColor,getDrawble等其他方法,起到中间者的作用,将需要处理的处理完后返回处理的结果,其他的交给父类方法处理

第三种替换主题的方式,这种是通过在setContentView 之前setTheme,然后通过属性的?demoColor获取主题对应的值

第一种比较渣,第二,第三种参考
http://stackoverflow.com/questions/33987678/programmatically-change-the-value-of-a-color-resource-obtained-from-api-response#

例子地址,写得比较渣,仅供参考
https://gitee.com/fred_kang/ChangeStyleDemo

当中遇到一个问题,getDrawable不仅需要调用父类的方法,而且一定要用传主题的那个,不然会导致栈溢出
原因

还有关于?和@*
http://www.cnblogs.com/greatverve/archive/2011/12/27/Android-xml.html

**二.@*代表引用系统的非public资源。格式:@*android:type/name**
**  **系统资源定义分public和非public。public的声明在:
  <sdk_path>\platforms\android-8\data\res\values\public.xml
  **@*android:type/name:**可以调用系统定义的所有资源
**  @android:type/name:**只能够调用publi属性的资源。
  注意:没在public.xml中声明的资源是google不推荐使用的。
**三.?代表引用主题属性**
  另外一种资源值允许你引用当前主题中的属性的值。这个属性值只能在style资源和XML属性中使用;它允许你通过将它们改变为当前主题提供的标准变化来改变UI元素的外观,而不是提供具体的值。例如:
  android:textColor="?android:textDisabledColor" 

还有一种看起来比较复杂的可以使用于webview的,主要是需要遍历所有的view进行主题的切换

http://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650820786&idx=1&sn=692caf3110d2793a1c725706d8141edf&scene=1&srcid=0902EIdEFbyjMAMoNY3Ik3EN#wechat_redirect

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容