我已经定义了一个自定义类:
public class CustomResource extends Resources {}
以便在运行时加载自定义外部颜色。使用getResources().getColor()
时,这在Java代码中运行良好。
通过包含颜色引用的setContentView()
加载XML布局时,在扩充XML资源时,永远不会调用CustomResources的getColor()
。
我已经在上下文中覆盖getResources
和getSystemService
,但是getResources().getColor()
在构造函数解析XML属性时根本不会被它们调用。
这是因为来自obtainStyledAttributes()
的{{1}}是从小部件的构造函数中调用的。
我现在不知道还有什么需要另外覆盖。
示例:layout.xml包含对drawable / button.xml的引用,button.xml包含对colors / somecolor的引用。
我现在需要调用 - 例如 - Resource.Theme
构造函数(inflater通过调用带有xml属性作为参数的构造函数创建TextView)然后调用TextView
来使用我的资源类用于解析颜色而不是obtainStyledAttributes()
中当前发生的TypedArray
魔法。
答案 0 :(得分:3)