Android获得多个资源名称(<color name =“ c1”> @ color / c2 </color>)

时间:2019-07-12 04:05:27

标签: android android-resources

我正在使用皮肤框架,我需要获取资源名称。
使用关联资源时,无法获得正确的资源名称,如下所示:

    <color name="color_skin">#ffff0000</color>
    <color name="color_login">@color/color_skin</color>
String resName = context.getResources().getResourceEntryName(R.id.color_login);
resName is "color_login" 

我要获取resName为“ color_skin”,该怎么办?

其他说明
SkinUtils在xml中正确使用)
xml的SkinUtils:

<com.test.TestView
    ...
    android:background="@color/color_login"/>

<declare-styleable name="SkinBackgroundHelper"><attr name="android:background"/></declare-styleable>

SkinUtils for Java代码:

    TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.SkinBackgroundHelper, defStyleAttr, 0);
    if (a.hasValue(R.styleable.SkinBackgroundHelper_android_background)) {
        int resourceId = a.getResourceId(R.styleable.SkinBackgroundHelper_android_background, 0);
        // resourceId is R.id.color_skin !!!
    }

SkinUtils为xml,获取的最终resourceId为“ R.id.color_skin”。
如果仅使用Java代码,则无法获得“ R.idcolor_login”的“ R.id.color_skin”。

0 个答案:

没有答案