From fcc3348f61b2992f0b84e8e8dcb3535fc715298f Mon Sep 17 00:00:00 2001 From: Fabrice Di Meglio Date: Thu, 18 Oct 2012 11:11:51 -0700 Subject: Fix bug #7374285 GridLayout layout param margins are broken in RTL mode - resolve layout params in ViewGroup when layout direction is changed - layout param resolution is checking the previous layout direction to check if we need to resolve Change-Id: I70af2ad2b4ec83c2ec6c93b3ff445852500d1687 --- core/java/android/view/View.java | 4 +++- core/java/android/view/ViewGroup.java | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index b4ba871..b36db7f 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -10002,8 +10002,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, /** * Resolve the layout parameters depending on the resolved layout direction + * + * @hide */ - private void resolveLayoutParams() { + public void resolveLayoutParams() { if (mLayoutParams != null) { mLayoutParams.resolveLayoutDirection(getLayoutDirection()); } diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index b95e1bd..f49a839 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -5358,6 +5358,16 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } + @Override + public void resolveLayoutParams() { + super.resolveLayoutParams(); + int count = getChildCount(); + for (int i = 0; i < count; i++) { + final View child = getChildAt(i); + child.resolveLayoutParams(); + } + } + /** * @hide */ @@ -5981,6 +5991,11 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager */ @Override public void resolveLayoutDirection(int layoutDirection) { + // No need to resolve if it is the same layout direction as before + if (this.layoutDirection == layoutDirection) { + return; + } + setLayoutDirection(layoutDirection); if (!isMarginRelative()) return; -- cgit v1.1