我正在使用皮肤框架,我需要获取资源名称。
使用关联资源时,无法获得正确的资源名称,如下所示:
<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”。