diff options
| author | Adam Powell <adamp@google.com> | 2014-08-11 17:30:19 -0700 |
|---|---|---|
| committer | Adam Powell <adamp@google.com> | 2014-08-14 13:11:12 -0700 |
| commit | 16f2b90d6a54a824e60f09a31bb2a9263166cdd2 (patch) | |
| tree | 4bcbfb1a97301464e08ed27ecd38b656f10c3b38 /core/java/android/widget/CheckedTextView.java | |
| parent | e07b595519e68a8ee524b1886dea01475047abec (diff) | |
Show checkmarks at the start of material AlertDialog list items
Also fix a bug in parsing CheckedTextView tinting attributes
Bug 16552638
Change-Id: I20d41b6f6d418fdc115108d31f4f463e371794d2
Diffstat (limited to 'core/java/android/widget/CheckedTextView.java')
| -rw-r--r-- | core/java/android/widget/CheckedTextView.java | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java index ccd0480164f7..29a6a7d4177f 100644 --- a/core/java/android/widget/CheckedTextView.java +++ b/core/java/android/widget/CheckedTextView.java @@ -53,6 +53,8 @@ public class CheckedTextView extends TextView implements Checkable { private int mBasePadding; private int mCheckMarkWidth; + private int mCheckMarkGravity = Gravity.END; + private boolean mNeedRequestlayout; private static final int[] CHECKED_STATE_SET = { @@ -83,15 +85,17 @@ public class CheckedTextView extends TextView implements Checkable { } mCheckMarkTintMode = Drawable.parseTintMode(a.getInt( - R.styleable.CompoundButton_buttonTintMode, -1), mCheckMarkTintMode); + R.styleable.CheckedTextView_checkMarkTintMode, -1), mCheckMarkTintMode); - if (a.hasValue(R.styleable.CompoundButton_buttonTint)) { - mCheckMarkTintList = a.getColorStateList(R.styleable.CompoundButton_buttonTint); + if (a.hasValue(R.styleable.CheckedTextView_checkMarkTint)) { + mCheckMarkTintList = a.getColorStateList(R.styleable.CheckedTextView_checkMarkTint); mHasCheckMarkTint = true; applyCheckMarkTint(); } + mCheckMarkGravity = a.getInt(R.styleable.CheckedTextView_checkMarkGravity, Gravity.END); + boolean checked = a.getBoolean(R.styleable.CheckedTextView_checked, false); setChecked(checked); @@ -293,7 +297,7 @@ public class CheckedTextView extends TextView implements Checkable { @Override protected void internalSetPadding(int left, int top, int right, int bottom) { super.internalSetPadding(left, top, right, bottom); - setBasePadding(isLayoutRtl()); + setBasePadding(isCheckMarkAtStart()); } @Override @@ -306,7 +310,7 @@ public class CheckedTextView extends TextView implements Checkable { resetPaddingToInitialValues(); int newPadding = (mCheckMarkDrawable != null) ? mCheckMarkWidth + mBasePadding : mBasePadding; - if (isLayoutRtl()) { + if (isCheckMarkAtStart()) { mNeedRequestlayout |= (mPaddingLeft != newPadding); mPaddingLeft = newPadding; } else { @@ -319,14 +323,20 @@ public class CheckedTextView extends TextView implements Checkable { } } - private void setBasePadding(boolean isLayoutRtl) { - if (isLayoutRtl) { + private void setBasePadding(boolean checkmarkAtStart) { + if (checkmarkAtStart) { mBasePadding = mPaddingLeft; } else { mBasePadding = mPaddingRight; } } + private boolean isCheckMarkAtStart() { + final int gravity = Gravity.getAbsoluteGravity(mCheckMarkGravity, getLayoutDirection()); + final int hgrav = gravity & Gravity.HORIZONTAL_GRAVITY_MASK; + return hgrav == Gravity.LEFT; + } + @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); @@ -347,13 +357,13 @@ public class CheckedTextView extends TextView implements Checkable { break; } - final boolean isLayoutRtl = isLayoutRtl(); + final boolean checkMarkAtStart = isCheckMarkAtStart(); final int width = getWidth(); final int top = y; final int bottom = top + height; final int left; final int right; - if (isLayoutRtl) { + if (checkMarkAtStart) { left = mBasePadding; right = left + mCheckMarkWidth; } else { |
