Loading core/java/android/widget/CheckedTextView.java +19 −9 Original line number Original line Diff line number Diff line Loading @@ -53,6 +53,8 @@ public class CheckedTextView extends TextView implements Checkable { private int mBasePadding; private int mBasePadding; private int mCheckMarkWidth; private int mCheckMarkWidth; private int mCheckMarkGravity = Gravity.END; private boolean mNeedRequestlayout; private boolean mNeedRequestlayout; private static final int[] CHECKED_STATE_SET = { private static final int[] CHECKED_STATE_SET = { Loading Loading @@ -83,15 +85,17 @@ public class CheckedTextView extends TextView implements Checkable { } } mCheckMarkTintMode = Drawable.parseTintMode(a.getInt( mCheckMarkTintMode = Drawable.parseTintMode(a.getInt( R.styleable.CompoundButton_buttonTintMode, -1), mCheckMarkTintMode); R.styleable.CheckedTextView_checkMarkTintMode, -1), mCheckMarkTintMode); if (a.hasValue(R.styleable.CompoundButton_buttonTint)) { if (a.hasValue(R.styleable.CheckedTextView_checkMarkTint)) { mCheckMarkTintList = a.getColorStateList(R.styleable.CompoundButton_buttonTint); mCheckMarkTintList = a.getColorStateList(R.styleable.CheckedTextView_checkMarkTint); mHasCheckMarkTint = true; mHasCheckMarkTint = true; applyCheckMarkTint(); applyCheckMarkTint(); } } mCheckMarkGravity = a.getInt(R.styleable.CheckedTextView_checkMarkGravity, Gravity.END); boolean checked = a.getBoolean(R.styleable.CheckedTextView_checked, false); boolean checked = a.getBoolean(R.styleable.CheckedTextView_checked, false); setChecked(checked); setChecked(checked); Loading Loading @@ -293,7 +297,7 @@ public class CheckedTextView extends TextView implements Checkable { @Override @Override protected void internalSetPadding(int left, int top, int right, int bottom) { protected void internalSetPadding(int left, int top, int right, int bottom) { super.internalSetPadding(left, top, right, bottom); super.internalSetPadding(left, top, right, bottom); setBasePadding(isLayoutRtl()); setBasePadding(isCheckMarkAtStart()); } } @Override @Override Loading @@ -306,7 +310,7 @@ public class CheckedTextView extends TextView implements Checkable { resetPaddingToInitialValues(); resetPaddingToInitialValues(); int newPadding = (mCheckMarkDrawable != null) ? int newPadding = (mCheckMarkDrawable != null) ? mCheckMarkWidth + mBasePadding : mBasePadding; mCheckMarkWidth + mBasePadding : mBasePadding; if (isLayoutRtl()) { if (isCheckMarkAtStart()) { mNeedRequestlayout |= (mPaddingLeft != newPadding); mNeedRequestlayout |= (mPaddingLeft != newPadding); mPaddingLeft = newPadding; mPaddingLeft = newPadding; } else { } else { Loading @@ -319,14 +323,20 @@ public class CheckedTextView extends TextView implements Checkable { } } } } private void setBasePadding(boolean isLayoutRtl) { private void setBasePadding(boolean checkmarkAtStart) { if (isLayoutRtl) { if (checkmarkAtStart) { mBasePadding = mPaddingLeft; mBasePadding = mPaddingLeft; } else { } else { mBasePadding = mPaddingRight; 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 @Override protected void onDraw(Canvas canvas) { protected void onDraw(Canvas canvas) { super.onDraw(canvas); super.onDraw(canvas); Loading @@ -347,13 +357,13 @@ public class CheckedTextView extends TextView implements Checkable { break; break; } } final boolean isLayoutRtl = isLayoutRtl(); final boolean checkMarkAtStart = isCheckMarkAtStart(); final int width = getWidth(); final int width = getWidth(); final int top = y; final int top = y; final int bottom = top + height; final int bottom = top + height; final int left; final int left; final int right; final int right; if (isLayoutRtl) { if (checkMarkAtStart) { left = mBasePadding; left = mBasePadding; right = left + mCheckMarkWidth; right = left + mCheckMarkWidth; } else { } else { Loading core/res/res/layout/select_dialog_multichoice_material.xml +1 −0 Original line number Original line Diff line number Diff line Loading @@ -26,4 +26,5 @@ android:paddingStart="16dip" android:paddingStart="16dip" android:paddingEnd="16dip" android:paddingEnd="16dip" android:checkMark="?android:attr/listChoiceIndicatorMultiple" android:checkMark="?android:attr/listChoiceIndicatorMultiple" android:checkMarkGravity="start" android:ellipsize="marquee" /> android:ellipsize="marquee" /> core/res/res/layout/select_dialog_singlechoice_material.xml +1 −0 Original line number Original line Diff line number Diff line Loading @@ -26,4 +26,5 @@ android:paddingStart="16dip" android:paddingStart="16dip" android:paddingEnd="16dip" android:paddingEnd="16dip" android:checkMark="?android:attr/listChoiceIndicatorSingle" android:checkMark="?android:attr/listChoiceIndicatorSingle" android:checkMarkGravity="start" android:ellipsize="marquee" /> android:ellipsize="marquee" /> core/res/res/values/attrs.xml +11 −0 Original line number Original line Diff line number Diff line Loading @@ -3163,6 +3163,17 @@ result to valid color values. Saturate(S + D) --> result to valid color values. Saturate(S + D) --> <enum name="add" value="16" /> <enum name="add" value="16" /> </attr> </attr> <!-- Gravity for aligning a CheckedTextView's checkmark to one side or the other. --> <attr name="checkMarkGravity"> <!-- Push object to the left of its container, not changing its size. --> <flag name="left" value="0x03" /> <!-- Push object to the right of its container, not changing its size. --> <flag name="right" value="0x05" /> <!-- Push object to the beginning of its container, not changing its size. --> <flag name="start" value="0x00800003" /> <!-- Push object to the end of its container, not changing its size. --> <flag name="end" value="0x00800005" /> </attr> </declare-styleable> </declare-styleable> <declare-styleable name="EditText"> <declare-styleable name="EditText"> </declare-styleable> </declare-styleable> Loading core/res/res/values/symbols.xml +3 −0 Original line number Original line Diff line number Diff line Loading @@ -1981,4 +1981,7 @@ <java-symbol type="string" name="time_picker_am_label" /> <java-symbol type="string" name="time_picker_am_label" /> <java-symbol type="string" name="time_picker_pm_label" /> <java-symbol type="string" name="time_picker_pm_label" /> <java-symbol type="dimen" name="text_size_small_material" /> <java-symbol type="dimen" name="text_size_small_material" /> <java-symbol type="attr" name="checkMarkGravity" /> <java-symbol type="layout" name="select_dialog_singlechoice_material" /> <java-symbol type="layout" name="select_dialog_multichoice_material" /> </resources> </resources> Loading
core/java/android/widget/CheckedTextView.java +19 −9 Original line number Original line Diff line number Diff line Loading @@ -53,6 +53,8 @@ public class CheckedTextView extends TextView implements Checkable { private int mBasePadding; private int mBasePadding; private int mCheckMarkWidth; private int mCheckMarkWidth; private int mCheckMarkGravity = Gravity.END; private boolean mNeedRequestlayout; private boolean mNeedRequestlayout; private static final int[] CHECKED_STATE_SET = { private static final int[] CHECKED_STATE_SET = { Loading Loading @@ -83,15 +85,17 @@ public class CheckedTextView extends TextView implements Checkable { } } mCheckMarkTintMode = Drawable.parseTintMode(a.getInt( mCheckMarkTintMode = Drawable.parseTintMode(a.getInt( R.styleable.CompoundButton_buttonTintMode, -1), mCheckMarkTintMode); R.styleable.CheckedTextView_checkMarkTintMode, -1), mCheckMarkTintMode); if (a.hasValue(R.styleable.CompoundButton_buttonTint)) { if (a.hasValue(R.styleable.CheckedTextView_checkMarkTint)) { mCheckMarkTintList = a.getColorStateList(R.styleable.CompoundButton_buttonTint); mCheckMarkTintList = a.getColorStateList(R.styleable.CheckedTextView_checkMarkTint); mHasCheckMarkTint = true; mHasCheckMarkTint = true; applyCheckMarkTint(); applyCheckMarkTint(); } } mCheckMarkGravity = a.getInt(R.styleable.CheckedTextView_checkMarkGravity, Gravity.END); boolean checked = a.getBoolean(R.styleable.CheckedTextView_checked, false); boolean checked = a.getBoolean(R.styleable.CheckedTextView_checked, false); setChecked(checked); setChecked(checked); Loading Loading @@ -293,7 +297,7 @@ public class CheckedTextView extends TextView implements Checkable { @Override @Override protected void internalSetPadding(int left, int top, int right, int bottom) { protected void internalSetPadding(int left, int top, int right, int bottom) { super.internalSetPadding(left, top, right, bottom); super.internalSetPadding(left, top, right, bottom); setBasePadding(isLayoutRtl()); setBasePadding(isCheckMarkAtStart()); } } @Override @Override Loading @@ -306,7 +310,7 @@ public class CheckedTextView extends TextView implements Checkable { resetPaddingToInitialValues(); resetPaddingToInitialValues(); int newPadding = (mCheckMarkDrawable != null) ? int newPadding = (mCheckMarkDrawable != null) ? mCheckMarkWidth + mBasePadding : mBasePadding; mCheckMarkWidth + mBasePadding : mBasePadding; if (isLayoutRtl()) { if (isCheckMarkAtStart()) { mNeedRequestlayout |= (mPaddingLeft != newPadding); mNeedRequestlayout |= (mPaddingLeft != newPadding); mPaddingLeft = newPadding; mPaddingLeft = newPadding; } else { } else { Loading @@ -319,14 +323,20 @@ public class CheckedTextView extends TextView implements Checkable { } } } } private void setBasePadding(boolean isLayoutRtl) { private void setBasePadding(boolean checkmarkAtStart) { if (isLayoutRtl) { if (checkmarkAtStart) { mBasePadding = mPaddingLeft; mBasePadding = mPaddingLeft; } else { } else { mBasePadding = mPaddingRight; 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 @Override protected void onDraw(Canvas canvas) { protected void onDraw(Canvas canvas) { super.onDraw(canvas); super.onDraw(canvas); Loading @@ -347,13 +357,13 @@ public class CheckedTextView extends TextView implements Checkable { break; break; } } final boolean isLayoutRtl = isLayoutRtl(); final boolean checkMarkAtStart = isCheckMarkAtStart(); final int width = getWidth(); final int width = getWidth(); final int top = y; final int top = y; final int bottom = top + height; final int bottom = top + height; final int left; final int left; final int right; final int right; if (isLayoutRtl) { if (checkMarkAtStart) { left = mBasePadding; left = mBasePadding; right = left + mCheckMarkWidth; right = left + mCheckMarkWidth; } else { } else { Loading
core/res/res/layout/select_dialog_multichoice_material.xml +1 −0 Original line number Original line Diff line number Diff line Loading @@ -26,4 +26,5 @@ android:paddingStart="16dip" android:paddingStart="16dip" android:paddingEnd="16dip" android:paddingEnd="16dip" android:checkMark="?android:attr/listChoiceIndicatorMultiple" android:checkMark="?android:attr/listChoiceIndicatorMultiple" android:checkMarkGravity="start" android:ellipsize="marquee" /> android:ellipsize="marquee" />
core/res/res/layout/select_dialog_singlechoice_material.xml +1 −0 Original line number Original line Diff line number Diff line Loading @@ -26,4 +26,5 @@ android:paddingStart="16dip" android:paddingStart="16dip" android:paddingEnd="16dip" android:paddingEnd="16dip" android:checkMark="?android:attr/listChoiceIndicatorSingle" android:checkMark="?android:attr/listChoiceIndicatorSingle" android:checkMarkGravity="start" android:ellipsize="marquee" /> android:ellipsize="marquee" />
core/res/res/values/attrs.xml +11 −0 Original line number Original line Diff line number Diff line Loading @@ -3163,6 +3163,17 @@ result to valid color values. Saturate(S + D) --> result to valid color values. Saturate(S + D) --> <enum name="add" value="16" /> <enum name="add" value="16" /> </attr> </attr> <!-- Gravity for aligning a CheckedTextView's checkmark to one side or the other. --> <attr name="checkMarkGravity"> <!-- Push object to the left of its container, not changing its size. --> <flag name="left" value="0x03" /> <!-- Push object to the right of its container, not changing its size. --> <flag name="right" value="0x05" /> <!-- Push object to the beginning of its container, not changing its size. --> <flag name="start" value="0x00800003" /> <!-- Push object to the end of its container, not changing its size. --> <flag name="end" value="0x00800005" /> </attr> </declare-styleable> </declare-styleable> <declare-styleable name="EditText"> <declare-styleable name="EditText"> </declare-styleable> </declare-styleable> Loading
core/res/res/values/symbols.xml +3 −0 Original line number Original line Diff line number Diff line Loading @@ -1981,4 +1981,7 @@ <java-symbol type="string" name="time_picker_am_label" /> <java-symbol type="string" name="time_picker_am_label" /> <java-symbol type="string" name="time_picker_pm_label" /> <java-symbol type="string" name="time_picker_pm_label" /> <java-symbol type="dimen" name="text_size_small_material" /> <java-symbol type="dimen" name="text_size_small_material" /> <java-symbol type="attr" name="checkMarkGravity" /> <java-symbol type="layout" name="select_dialog_singlechoice_material" /> <java-symbol type="layout" name="select_dialog_multichoice_material" /> </resources> </resources>