Move away from custom created attrs arrays
Since obtainStyledAttributes() expects them to be in
order, it's safer to just let aapt create the arrays
via styleables.
BUG: 29750321
Change-Id: Iada1804cad78de9db2be793b3518e19588a3bfea
diff --git a/v7/appcompat/res/values/attrs.xml b/v7/appcompat/res/values/attrs.xml
index eeb5f7d..128ded8 100644
--- a/v7/appcompat/res/values/attrs.xml
+++ b/v7/appcompat/res/values/attrs.xml
@@ -1090,4 +1090,14 @@
</attr>
</declare-styleable>
+ <declare-styleable name="AppCompatTextHelper">
+ <attr name="android:drawableLeft" />
+ <attr name="android:drawableTop" />
+ <attr name="android:drawableRight" />
+ <attr name="android:drawableBottom" />
+ <attr name="android:drawableStart" />
+ <attr name="android:drawableEnd" />
+ <attr name="android:textAppearance" />
+ </declare-styleable>
+
</resources>
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelper.java b/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelper.java
index d410b2c..35aa850 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelper.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelper.java
@@ -35,14 +35,6 @@
return new AppCompatTextHelper(textView);
}
- private static final int[] VIEW_ATTRS = {
- android.R.attr.textAppearance,
- android.R.attr.drawableLeft,
- android.R.attr.drawableTop,
- android.R.attr.drawableRight,
- android.R.attr.drawableBottom
- };
-
final TextView mView;
private TintInfo mDrawableLeftTint;
@@ -60,20 +52,24 @@
// First read the TextAppearance style id
TintTypedArray a = TintTypedArray.obtainStyledAttributes(context, attrs,
- VIEW_ATTRS, defStyleAttr, 0);
- final int ap = a.getResourceId(0, -1);
+ R.styleable.AppCompatTextHelper, defStyleAttr, 0);
+ final int ap = a.getResourceId(R.styleable.AppCompatTextHelper_android_textAppearance, -1);
// Now read the compound drawable and grab any tints
if (a.hasValue(1)) {
- mDrawableLeftTint = createTintInfo(context, drawableManager, a.getResourceId(1, 0));
+ mDrawableLeftTint = createTintInfo(context, drawableManager,
+ a.getResourceId(R.styleable.AppCompatTextHelper_android_drawableLeft, 0));
}
if (a.hasValue(2)) {
- mDrawableTopTint = createTintInfo(context, drawableManager, a.getResourceId(2, 0));
+ mDrawableTopTint = createTintInfo(context, drawableManager,
+ a.getResourceId(R.styleable.AppCompatTextHelper_android_drawableTop, 0));
}
if (a.hasValue(3)) {
- mDrawableRightTint = createTintInfo(context, drawableManager, a.getResourceId(3, 0));
+ mDrawableRightTint = createTintInfo(context, drawableManager,
+ a.getResourceId(R.styleable.AppCompatTextHelper_android_drawableRight, 0));
}
if (a.hasValue(4)) {
- mDrawableBottomTint = createTintInfo(context, drawableManager, a.getResourceId(4, 0));
+ mDrawableBottomTint = createTintInfo(context, drawableManager,
+ a.getResourceId(R.styleable.AppCompatTextHelper_android_drawableBottom, 0));
}
a.recycle();
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelperV17.java b/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelperV17.java
index 45939d3..07727f3 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelperV17.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelperV17.java
@@ -19,14 +19,11 @@
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
+import android.support.v7.appcompat.R;
import android.util.AttributeSet;
import android.widget.TextView;
class AppCompatTextHelperV17 extends AppCompatTextHelper {
-
- private static final int[] VIEW_ATTRS_v17 = {
- android.R.attr.drawableStart, android.R.attr.drawableEnd };
-
private TintInfo mDrawableStartTint;
private TintInfo mDrawableEndTint;
@@ -41,12 +38,15 @@
final Context context = mView.getContext();
final AppCompatDrawableManager drawableManager = AppCompatDrawableManager.get();
- TypedArray a = context.obtainStyledAttributes(attrs, VIEW_ATTRS_v17, defStyleAttr, 0);
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AppCompatTextHelper,
+ defStyleAttr, 0);
if (a.hasValue(0)) {
- mDrawableStartTint = createTintInfo(context, drawableManager, a.getResourceId(0, 0));
+ mDrawableStartTint = createTintInfo(context, drawableManager,
+ a.getResourceId(R.styleable.AppCompatTextHelper_android_drawableStart, 0));
}
if (a.hasValue(1)) {
- mDrawableEndTint = createTintInfo(context, drawableManager, a.getResourceId(1, 0));
+ mDrawableEndTint = createTintInfo(context, drawableManager,
+ a.getResourceId(R.styleable.AppCompatTextHelper_android_drawableEnd, 0));
}
a.recycle();
}