解决类型化数组值

时间:2018-10-23 01:30:54

标签: android xml android-styles typed-arrays

我定义了以下数组:

<resources>
    <array name="feature_styles">
        <item>@array/style_main</item>
        <item>@array/style_gray</item>
    </array>
    <array name="style_main">
        <item>?attr/colorMain</item>
        <item>?attr/colorMainLighter</item>
    </array>
    <array name="style_gray">
        <item>?attr/colorGrayNormal</item>
        <item>?attr/colorGrayWeak</item>
    </array>
</resources>

对于feature_styles中的每个项目,我都需要解析引用的内部数组,并从中检索实际的颜色值。这些颜色可以内联指定,也可以作为对R.color的引用,也可以作为属性引用。我当前的代码因以下错误而崩溃:

java.lang.UnsupportedOperationException: Failed to resolve attribute at index 1: TypedValue{t=0x2/d=0x7f0400ab a=5}

这是我当前的代码:

val arr = res.obtainTypedArray(R.array.feature_styles);
for (i in 0 until arr.length()) {
    val id = arr.getResourceId(i, 0);
    if (id != 0) {
        val itemArr = res.obtainTypedArray(id);
        val mainColor = itemArr.getValue(0, 0)
        itemArr.recycle()
    }
}
arr.recycle() 

0 个答案:

没有答案