覆盖Context的`getResources()`以在xml中工作

时间:2013-07-10 15:23:19

标签: android xml resources overrides

我有一个自定义Resources类,其中一个可以设置颜色,它将覆盖res / values / colors中定义的颜色。每个活动都会覆盖getResources()方法以返回我的自定义资源对象。如果我以编程方式接收颜色(在java中调用getResources().getColor(R.color.xxx)),一切都按预期工作。问题出在xml-layout文件中。如果我在那里定义一种颜色(即使用textColor="@color/xxx"),它将始终使用/res/values/colors.xml中的颜色而不是我的覆盖颜色。有没有办法改变这种行为,在从XML扩充时,我的自定义资源对象正在使用?

1 个答案:

答案 0 :(得分:1)

在我无法找到AttributeSet的实际实现后,我意识到,整个想法都是错误的。我想这是因为资源是预编译的,所以使用Resources类的方式不同。解决方案是Build-System本身。在使用库时,资源的优先级低于使用它的应用程序。因此,使用我的库的应用程序可以通过在colors.xml中使用相同的名称定义自己的库来覆盖库资源。