如何让android LayoutInflater使用我的自定义资源

时间:2014-04-24 15:02:24

标签: java android android-resources layout-inflater

我已经定义了一个自定义类:

public class CustomResource extends Resources {}

以便在运行时加载自定义外部颜色。使用getResources().getColor()时,这在Java代码中运行良好。

通过包含颜色引用的setContentView()加载XML布局时,在扩充XML资源时,永远不会调用CustomResources的getColor()

我已经在上下文中覆盖getResourcesgetSystemService,但是getResources().getColor()在构造函数解析XML属性时根本不会被它们调用。

这是因为来自obtainStyledAttributes()的{​​{1}}是从小部件的构造函数中调用的。

我现在不知道还有什么需要另外覆盖。

示例:layout.xml包含对drawable / button.xml的引用,button.xml包含对colors / somecolor的引用。

我现在需要调用 - 例如 - Resource.Theme构造函数(inflater通过调用带有xml属性作为参数的构造函数创建TextView)然后调用TextView来使用我的资源类用于解析颜色而不是obtainStyledAttributes()中当前发生的TypedArray魔法。

1 个答案:

答案 0 :(得分:3)