Merge "Show checkmarks at the start of material AlertDialog list items" into lmp-dev

This commit is contained in:
Adam Powell
2014-08-14 20:13:04 +00:00
committed by Android (Google) Code Review
5 changed files with 35 additions and 9 deletions

View File

@@ -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 {

View File

@@ -26,4 +26,5 @@
android:paddingStart="16dip"
android:paddingEnd="16dip"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:checkMarkGravity="start"
android:ellipsize="marquee" />

View File

@@ -26,4 +26,5 @@
android:paddingStart="16dip"
android:paddingEnd="16dip"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:checkMarkGravity="start"
android:ellipsize="marquee" />

View File

@@ -3163,6 +3163,17 @@
result to valid color values. Saturate(S + D) -->
<enum name="add" value="16" />
</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 name="EditText">
</declare-styleable>

View File

@@ -1981,4 +1981,7 @@
<java-symbol type="string" name="time_picker_am_label" />
<java-symbol type="string" name="time_picker_pm_label" />
<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>