summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2012-10-18 11:11:51 -0700
committerFabrice Di Meglio <fdimeglio@google.com>2012-10-18 13:24:03 -0700
commitfcc3348f61b2992f0b84e8e8dcb3535fc715298f (patch)
treee92127c9c57c82e3af3e7cb91c951fdaf0d4225a
parentfc2652efedeaae40c4a3748a8de9ee833e1443e1 (diff)
downloadframeworks_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.java4
-rw-r--r--core/java/android/view/ViewGroup.java15
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;