3

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

4

1 回答 1

1

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

于 2013-07-10T19:21:38.577 回答