From e2386c184a75b15a0fe7e3791e7ad06d59be7c80 Mon Sep 17 00:00:00 2001 From: Fabrice Di Meglio Date: Thu, 26 Jul 2012 15:17:16 -0700 Subject: [PATCH] Make CheckedTextView RTL aware - DO NOT MERGE - see bug #5429822 UI should be mirrored for RTL locales (Arabic, Hebrew, farsi) Change-Id: Ic647e105571e01e9773e4c27e9f52997d24c408e --- core/java/android/widget/CheckedTextView.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java index 61935c2b2024d..46079f9372015 100644 --- a/core/java/android/widget/CheckedTextView.java +++ b/core/java/android/widget/CheckedTextView.java @@ -174,7 +174,11 @@ public class CheckedTextView extends TextView implements Checkable { int newPadding = (mCheckMarkDrawable != null) ? mCheckMarkWidth + mBasePadding : mBasePadding; mNeedRequestlayout |= (mPaddingRight != newPadding); - mPaddingRight = newPadding; + if (isLayoutRtl()) { + mPaddingLeft = newPadding; + } else { + mPaddingRight = newPadding; + } if (mNeedRequestlayout) { requestLayout(); mNeedRequestlayout = false; @@ -184,7 +188,7 @@ public class CheckedTextView extends TextView implements Checkable { @Override public void setPadding(int left, int top, int right, int bottom) { super.setPadding(left, top, right, bottom); - mBasePadding = mPaddingRight; + mBasePadding = getPaddingEnd(); } @Override @@ -213,12 +217,13 @@ public class CheckedTextView extends TextView implements Checkable { break; } - int right = getWidth(); - checkMarkDrawable.setBounds( - right - mPaddingRight, - y, - right - mPaddingRight + mCheckMarkWidth, - y + height); + final boolean isLayoutRtl = isLayoutRtl(); + final int width = getWidth(); + final int top = y; + final int bottom = top + height; + final int left = isLayoutRtl ? getPaddingEnd() : width - getPaddingEnd(); + final int right = left + mCheckMarkWidth; + checkMarkDrawable.setBounds( left, top, right, bottom); checkMarkDrawable.draw(canvas); } }