如何使用“ sdk / color.xml”中“ app / color.xml”中提到的颜色?

时间:2019-04-23 15:41:12

标签: android

我需要将颜色从应用程序更改为库(SDK)。 我需要使用SDK中应用程序中color.xml文件中的颜色。 该SDK具有自己的color.xml。因此,在app中对color.xml文件进行的更改也应适用于SDK。

app / color.xml

<resource>
 <color name="pop_up">#4fe40f</color>
</resource>

SDk / color.xml

<resource>
<color name="popup_color">?attr/pop_up</color>
</resource>

SDK / attrs.xml

<resources>
    <attr name="pop_up" format="reference|color"/>
</resources>

我尝试使用?attrs / color_name和父/子样式,但无法覆盖SDK中的颜色。

预期结果::

app / color.xml

<resource>
 <color name="pop_up">#4fe40f</color>
</resource>

SDk / color.xml

<resource>
<color name="popup_color">@color/pop_up</color> // color "pop_up" should come from app and apply here.
</resource>

2 个答案:

答案 0 :(得分:0)

无需从app / color.xml中读取值,如果SDK / color.xml中存在具有相同颜色名称的颜色,它将直接覆盖

app / color.xml

<resource>
 <color name="pop_up">#4fe40f</color>
</resource>

SDk / color.xml

<resource>
<color name="pop_up">#64646585</color> // #4fe40f is override
</resource>

答案 1 :(得分:0)

解决方案:

app / color.xml

<resource> <color name="pop_up">#4fe40f</color> </resource>

SDK / color.xml

<resource> <color name="pop_up">"#000000"</color> </resource>

项目的资源文件将始终覆盖sdk的资源文件。 在sdk中定义一个参数名称,如果主项目中存在相同的参数名称,它将使用项目中的值。

因此,您的解决方案是在sdk中声明名称为pop_up的颜色,在项目中声明相同的颜色。