我正在创建一个android库,我想知道将颜色从主应用模块传递到我的库的最佳方法。
我的颜色文件中有以下颜色。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="textColor1">#848484</color>
<color name="textColor2">#99848484</color>
<color name="textColor3">#676767</color>
<color name="textColor4">#e7e6e6</color>
</resources>
我想做的是让库的用户能够以编程方式传递这些颜色的值,这样我就可以在库中以正常的方式使用它们:
在XML中:
android:textColor="@color/textColor1"
或者在Java中:
setTextColor(ActivityCompat.getColor(context, R.color. textColor1));
2条答案
按热度按时间kcrjzv8t1#
创建此功能方法有很多,下面是其中之一:在Libray中创建实用程序类:
在库中的任意位置使用此
colorId
例如
应用项目中的颜色,例如:
sy5wg1nm2#
资源合并的工作方式是,如果我们设置
tools:override="true"
属性,那么root-app的资源将覆盖库的资源(-ies)。我是说,在根应用程序的
colors.xml
文件中,执行以下操作:但是我们不喜欢为每个资源添加所述属性,因此我创建了
colors_overrides.xml
文件(在我的colors.xml
文件旁边),并将所述属性直接添加到resource
元素,如下所示: