summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;