From 78528b22c29f570469fe3c75328042f83a5a24c3 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Tue, 2 Jun 2015 17:33:09 +0200 Subject: Fixed a RTL layouting bug with LinearLayout When the RTL properties of a horizontal LinearLayout changed, nobody enforced the view to be layouted anew, even though its layout is dependent on the layout direction. This could lead to stale layouts being temporarily layouted the wrong way. Bug: 20495301 Change-Id: I979c8d86ee711626b2901b65ebdf007c1eb1c0fa --- core/java/android/widget/LinearLayout.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'core/java/android/widget/LinearLayout.java') diff --git a/core/java/android/widget/LinearLayout.java b/core/java/android/widget/LinearLayout.java index f153ce5..9d14254 100644 --- a/core/java/android/widget/LinearLayout.java +++ b/core/java/android/widget/LinearLayout.java @@ -185,6 +185,8 @@ public class LinearLayout extends ViewGroup { private int mShowDividers; private int mDividerPadding; + private int mLayoutDirection = View.LAYOUT_DIRECTION_UNDEFINED; + public LinearLayout(Context context) { this(context, null); } @@ -1567,6 +1569,17 @@ public class LinearLayout extends ViewGroup { } } + @Override + public void onRtlPropertiesChanged(@ResolvedLayoutDir int layoutDirection) { + super.onRtlPropertiesChanged(layoutDirection); + if (layoutDirection != mLayoutDirection) { + mLayoutDirection = layoutDirection; + if (mOrientation == HORIZONTAL) { + requestLayout(); + } + } + } + /** * Position the children during a layout pass if the orientation of this * LinearLayout is set to {@link #HORIZONTAL}. -- cgit v1.1