最近在做android2.2 往 android4.0迁移公共控件的工作,遇到些问题,在此做个记录,以便以后查阅。
android2.2 frameworks在theme style这块是比较简单的就一套主要的theme “Theme”,项目中使用sdk_addon方式更改style中定义,没有问题,既没有影响frameworks中源码,又达到修改部分公共控件的效果。
然而,在把android2.2 的的代码使用sdk_addon方式合并代码到android4.0上时,出现了浏览器中button,radiobutton , checkbox异常不能显示现象,经查阅,原来浏览器在显示这些button时使用android原生控件,而因此造成不能显示,具体原因因项目急于结项,还未查明,据我的估计是,原来是只有“Theme”一个主题,现在4.0是"Theme"、"Theme.Holo"两个主题,而且以"Theme.Holo"为主,而覆盖是按默认覆盖,其实并没有覆盖到"Theme.Holo" 下button,radiobutton,checkbox这些,如果按照"Theme.Holo"下一起覆盖应该是没有问题的。最终考虑到项目是从2.2迁移而来,大部分应用也是按2.2的走的,因此就直接在frameworks里把”Theme“对应下的style修改了。
另外有几点,我觉得值得记录下来的,android4.0使用一个theme_default,style_default的xml,里面都是定义的默认相关style调用,google建议修改默认都在此两个xml里修改,从各个公共控件默认调用来看,虽然都是先走attrs.xml 然后在对应theme里找,但似乎在4.0里这里google本身还处理的比较乱,没有全部都是对应到theme_default里,theme_default里也不是所有的都是走style_default,所以修改公共控件的时候还是要走查一下代码。其实主要还是修改style。
来源:oschina
链接:https://my.oschina.net/u/86964/blog/173699