24

我一次又一次地想知道是否有某种方法可以colors.xml通过引用另一种已定义的颜色来定义颜色。好吧,我试过了,确实,你似乎可以使用@color/XXX 引用其他颜色。

例如,一个 colors.xml 可能看起来像:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    …
    <color name="primary_blue">#205081</color>
    <color name="action_bar_text">@color/primary_blue</color>
    …
</resources>

但我不希望其他人primary_blue直接使用我的定义——在没有上下文的情况下将某些东西变成蓝色是没有意义的。我想出的最佳解决方案是在“直接”颜色前面加上前缀primary_blue,然后评论它们不应该直接使用。

有什么方法可以防止使用这些直接颜色,同时仍然允许我的 colors.xml 文件引用它们?我在想也许样式或 apklib 可以帮助我。

4

1 回答 1

2

在此处添加答案,以防将来有人遇到此问题。

创建 Android 库时,您可以将资源标记为 public。任何不在public.xml文件中的资源都被认为是私有的。

隐式地将属性设为私有不仅可以防止您的库的用户体验来自内部库资源的代码完成建议,而且还允许您重命名或删除私有资源而不会破坏您的库的客户端。私有资源会从代码完成和主题编辑器中过滤掉,当您尝试引用私有资源时,Lint 会发出警告。

于 2017-10-17T08:07:07.840 回答