From 15bbde41dafd592b8d45a7ee6003c1f0b439cb68 Mon Sep 17 00:00:00 2001 From: Fabrice Di Meglio Date: Fri, 28 Sep 2012 15:49:38 -0700 Subject: [PATCH] Fix bug #7199562 UI mirroring for RTL locales (Arabic, Hebrew, Farsi): Play settings - fix padding issue. Need to update padding if layout direction change Change-Id: I2924c1b94c7ef054dd9bd670de4c5c206f52e412 --- core/java/android/widget/CheckedTextView.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java index bc78adc3d68dc..cea1fd51136da 100644 --- a/core/java/android/widget/CheckedTextView.java +++ b/core/java/android/widget/CheckedTextView.java @@ -46,6 +46,9 @@ public class CheckedTextView extends TextView implements Checkable { private int mCheckMarkWidth; private boolean mNeedRequestlayout; + private int initialPaddingLeft = -1; + private int initialPaddingRight = -1; + private static final int[] CHECKED_STATE_SET = { R.attr.state_checked }; @@ -176,10 +179,22 @@ public class CheckedTextView extends TextView implements Checkable { protected void internalSetPadding(int left, int top, int right, int bottom) { super.internalSetPadding(left, top, right, bottom); setBasePadding(isLayoutRtl()); + initialPaddingLeft = mPaddingLeft; + initialPaddingRight = mPaddingRight; } @Override public void onPaddingChanged(int layoutDirection) { + updatePadding(); + } + + @Override + public void onRtlPropertiesChanged() { + super.onRtlPropertiesChanged(); + updatePadding(); + } + + private void updatePadding() { int newPadding = (mCheckMarkDrawable != null) ? mCheckMarkWidth + mBasePadding : mBasePadding; mNeedRequestlayout |= (mPaddingRight != newPadding); @@ -193,7 +208,7 @@ public class CheckedTextView extends TextView implements Checkable { mNeedRequestlayout = false; } } - + @Override public void setPadding(int left, int top, int right, int bottom) { super.setPadding(left, top, right, bottom);