ColorStateList: load color with obtainStyledAttributes()

This commit is contained in:
Julian Winkler
2024-04-09 07:13:03 +02:00
parent ce6b83ad81
commit 540071e97e

View File

@@ -16,6 +16,7 @@
package android.content.res;
import android.content.Context;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.util.StateSet;
@@ -186,25 +187,20 @@ public class ColorStateList {
continue;
}
int colorRes = 0;
int color = 0xffff0000;
boolean haveColor = false;
int i;
int j = 0;
final int numAttrs = attrs.getAttributeCount();
int[] stateSpec = new int[numAttrs];
TypedArray a = Context.this_application.obtainStyledAttributes(attrs, com.android.internal.R.styleable.ColorStateListItem);
color = a.getColor(com.android.internal.R.styleable.ColorStateListItem_color, color);
a.recycle();
for (i = 0; i < numAttrs; i++) {
final int stateResId = attrs.getAttributeNameResource(i);
if (stateResId == 0)
break;
if (stateResId == com.android.internal.R.attr.color) {
colorRes = attrs.getAttributeResourceValue(i, 0);
if (colorRes == 0) {
color = attrs.getAttributeIntValue(i, color);
haveColor = true;
}
} else {
stateSpec[j++] = attrs.getAttributeBooleanValue(i, false)
? stateResId
@@ -213,13 +209,6 @@ public class ColorStateList {
}
stateSpec = StateSet.trimStateSet(stateSpec, j);
if (colorRes != 0) {
color = r.getColor(colorRes);
} else if (!haveColor) {
throw new XmlPullParserException(
parser.getPositionDescription() + ": <item> tag requires a 'android:color' attribute.");
}
if (listSize == 0 || stateSpec.length == 0) {
mDefaultColor = color;
}