Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-通过引用其他已定义的颜色来定义颜色_Android_Xml_Colors_Android Resources - Fatal编程技术网

Android-通过引用其他已定义的颜色来定义颜色

Android-通过引用其他已定义的颜色来定义颜色,android,xml,colors,android-resources,Android,Xml,Colors,Android Resources,我一次又一次地想知道是否有某种方法可以通过引用已定义的另一种颜色来定义colors.xml中的颜色。好吧,我试过了,事实上,你似乎可以使用@color/XXX引用其他颜色 例如,一个人的colors.xml可能看起来像: <?xml version="1.0" encoding="utf-8"?> <resources> … <color name="primary_blue">#205081</color> <col

我一次又一次地想知道是否有某种方法可以通过引用已定义的另一种颜色来定义
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>

…
#205081
@颜色/原色\蓝色
…
但我不想让其他人直接使用我的
primary_blue
定义——没有上下文的蓝色定义是没有意义的。我想到的最好的解决方案是在“直接”颜色前面加上前缀,比如
primary\u blue
,然后说明它们不应该直接使用


有没有办法阻止使用这些直接颜色,同时仍然允许my colors.xml文件引用它们?我想也许styles或apklib可以帮我解决这个问题。

在这里添加一个答案,以防将来有人遇到这个问题

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

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


如果你打算在不同的情况下使用相同的颜色,那么“上下文”就没有任何意义了。此外,如果操作栏颜色可以访问,那么主蓝色也可以访问。这将非常有用,因为它强制执行良好的编码实践。可惜没有办法在xml中隐藏名称空间。