diff options
author | Fabrice Di Meglio <fdimeglio@google.com> | 2012-10-18 11:11:51 -0700 |
---|---|---|
committer | Fabrice Di Meglio <fdimeglio@google.com> | 2012-10-18 13:24:03 -0700 |
commit | fcc3348f61b2992f0b84e8e8dcb3535fc715298f (patch) | |
tree | e92127c9c57c82e3af3e7cb91c951fdaf0d4225a | |
parent | fc2652efedeaae40c4a3748a8de9ee833e1443e1 (diff) | |
download | frameworks_base-fcc3348f61b2992f0b84e8e8dcb3535fc715298f.zip frameworks_base-fcc3348f61b2992f0b84e8e8dcb3535fc715298f.tar.gz frameworks_base-fcc3348f61b2992f0b84e8e8dcb3535fc715298f.tar.bz2 |
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
-rw-r--r-- | core/java/android/view/View.java | 4 | ||||
-rw-r--r-- | core/java/android/view/ViewGroup.java | 15 |
2 files changed, 18 insertions, 1 deletions
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; |