Loading core/java/android/view/ViewGroup.java +44 −6 Original line number Original line Diff line number Diff line Loading @@ -5507,6 +5507,11 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager */ */ static private final int DEFAULT_RELATIVE = Integer.MIN_VALUE; static private final int DEFAULT_RELATIVE = Integer.MIN_VALUE; private int initialLeftMargin; private int initialRightMargin; private int layoutDirection; /** /** * Creates a new set of layout parameters. The values are extracted from * Creates a new set of layout parameters. The values are extracted from * the supplied attributes set and context. * the supplied attributes set and context. Loading Loading @@ -5545,6 +5550,12 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager R.styleable.ViewGroup_MarginLayout_layout_marginEnd, DEFAULT_RELATIVE); R.styleable.ViewGroup_MarginLayout_layout_marginEnd, DEFAULT_RELATIVE); } } initialLeftMargin = leftMargin; initialRightMargin = rightMargin; // LTR by default layoutDirection = View.LAYOUT_DIRECTION_LTR; a.recycle(); a.recycle(); } } Loading @@ -5570,6 +5581,11 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager this.bottomMargin = source.bottomMargin; this.bottomMargin = source.bottomMargin; this.startMargin = source.startMargin; this.startMargin = source.startMargin; this.endMargin = source.endMargin; this.endMargin = source.endMargin; this.initialLeftMargin = source.leftMargin; this.initialRightMargin = source.rightMargin; this.layoutDirection = source.layoutDirection; } } /** /** Loading Loading @@ -5599,6 +5615,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager topMargin = top; topMargin = top; rightMargin = right; rightMargin = right; bottomMargin = bottom; bottomMargin = bottom; initialLeftMargin = left; initialRightMargin = right; } } /** /** Loading @@ -5624,6 +5642,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager topMargin = top; topMargin = top; endMargin = end; endMargin = end; bottomMargin = bottom; bottomMargin = bottom; initialLeftMargin = 0; initialRightMargin = 0; } } /** /** Loading @@ -5634,7 +5654,14 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @return the start margin in pixels. * @return the start margin in pixels. */ */ public int getMarginStart() { public int getMarginStart() { return startMargin; if (startMargin != DEFAULT_RELATIVE) return startMargin; switch(layoutDirection) { case View.LAYOUT_DIRECTION_RTL: return rightMargin; case View.LAYOUT_DIRECTION_LTR: default: return leftMargin; } } } /** /** Loading @@ -5645,7 +5672,14 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @return the end margin in pixels. * @return the end margin in pixels. */ */ public int getMarginEnd() { public int getMarginEnd() { return endMargin; if (endMargin != DEFAULT_RELATIVE) return endMargin; switch(layoutDirection) { case View.LAYOUT_DIRECTION_RTL: return leftMargin; case View.LAYOUT_DIRECTION_LTR: default: return rightMargin; } } } /** /** Loading @@ -5666,15 +5700,19 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager */ */ @Override @Override public void onResolveLayoutDirection(int layoutDirection) { public void onResolveLayoutDirection(int layoutDirection) { this.layoutDirection = layoutDirection; if (!isMarginRelative()) return; switch(layoutDirection) { switch(layoutDirection) { case View.LAYOUT_DIRECTION_RTL: case View.LAYOUT_DIRECTION_RTL: leftMargin = (endMargin > DEFAULT_RELATIVE) ? endMargin : leftMargin; leftMargin = (endMargin > DEFAULT_RELATIVE) ? endMargin : initialLeftMargin; rightMargin = (startMargin > DEFAULT_RELATIVE) ? startMargin : rightMargin; rightMargin = (startMargin > DEFAULT_RELATIVE) ? startMargin : initialRightMargin; break; break; case View.LAYOUT_DIRECTION_LTR: case View.LAYOUT_DIRECTION_LTR: default: default: leftMargin = (startMargin > DEFAULT_RELATIVE) ? startMargin : leftMargin; leftMargin = (startMargin > DEFAULT_RELATIVE) ? startMargin : initialLeftMargin; rightMargin = (endMargin > DEFAULT_RELATIVE) ? endMargin : rightMargin; rightMargin = (endMargin > DEFAULT_RELATIVE) ? endMargin : initialRightMargin; break; break; } } } } Loading Loading
core/java/android/view/ViewGroup.java +44 −6 Original line number Original line Diff line number Diff line Loading @@ -5507,6 +5507,11 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager */ */ static private final int DEFAULT_RELATIVE = Integer.MIN_VALUE; static private final int DEFAULT_RELATIVE = Integer.MIN_VALUE; private int initialLeftMargin; private int initialRightMargin; private int layoutDirection; /** /** * Creates a new set of layout parameters. The values are extracted from * Creates a new set of layout parameters. The values are extracted from * the supplied attributes set and context. * the supplied attributes set and context. Loading Loading @@ -5545,6 +5550,12 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager R.styleable.ViewGroup_MarginLayout_layout_marginEnd, DEFAULT_RELATIVE); R.styleable.ViewGroup_MarginLayout_layout_marginEnd, DEFAULT_RELATIVE); } } initialLeftMargin = leftMargin; initialRightMargin = rightMargin; // LTR by default layoutDirection = View.LAYOUT_DIRECTION_LTR; a.recycle(); a.recycle(); } } Loading @@ -5570,6 +5581,11 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager this.bottomMargin = source.bottomMargin; this.bottomMargin = source.bottomMargin; this.startMargin = source.startMargin; this.startMargin = source.startMargin; this.endMargin = source.endMargin; this.endMargin = source.endMargin; this.initialLeftMargin = source.leftMargin; this.initialRightMargin = source.rightMargin; this.layoutDirection = source.layoutDirection; } } /** /** Loading Loading @@ -5599,6 +5615,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager topMargin = top; topMargin = top; rightMargin = right; rightMargin = right; bottomMargin = bottom; bottomMargin = bottom; initialLeftMargin = left; initialRightMargin = right; } } /** /** Loading @@ -5624,6 +5642,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager topMargin = top; topMargin = top; endMargin = end; endMargin = end; bottomMargin = bottom; bottomMargin = bottom; initialLeftMargin = 0; initialRightMargin = 0; } } /** /** Loading @@ -5634,7 +5654,14 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @return the start margin in pixels. * @return the start margin in pixels. */ */ public int getMarginStart() { public int getMarginStart() { return startMargin; if (startMargin != DEFAULT_RELATIVE) return startMargin; switch(layoutDirection) { case View.LAYOUT_DIRECTION_RTL: return rightMargin; case View.LAYOUT_DIRECTION_LTR: default: return leftMargin; } } } /** /** Loading @@ -5645,7 +5672,14 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @return the end margin in pixels. * @return the end margin in pixels. */ */ public int getMarginEnd() { public int getMarginEnd() { return endMargin; if (endMargin != DEFAULT_RELATIVE) return endMargin; switch(layoutDirection) { case View.LAYOUT_DIRECTION_RTL: return leftMargin; case View.LAYOUT_DIRECTION_LTR: default: return rightMargin; } } } /** /** Loading @@ -5666,15 +5700,19 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager */ */ @Override @Override public void onResolveLayoutDirection(int layoutDirection) { public void onResolveLayoutDirection(int layoutDirection) { this.layoutDirection = layoutDirection; if (!isMarginRelative()) return; switch(layoutDirection) { switch(layoutDirection) { case View.LAYOUT_DIRECTION_RTL: case View.LAYOUT_DIRECTION_RTL: leftMargin = (endMargin > DEFAULT_RELATIVE) ? endMargin : leftMargin; leftMargin = (endMargin > DEFAULT_RELATIVE) ? endMargin : initialLeftMargin; rightMargin = (startMargin > DEFAULT_RELATIVE) ? startMargin : rightMargin; rightMargin = (startMargin > DEFAULT_RELATIVE) ? startMargin : initialRightMargin; break; break; case View.LAYOUT_DIRECTION_LTR: case View.LAYOUT_DIRECTION_LTR: default: default: leftMargin = (startMargin > DEFAULT_RELATIVE) ? startMargin : leftMargin; leftMargin = (startMargin > DEFAULT_RELATIVE) ? startMargin : initialLeftMargin; rightMargin = (endMargin > DEFAULT_RELATIVE) ? endMargin : rightMargin; rightMargin = (endMargin > DEFAULT_RELATIVE) ? endMargin : initialRightMargin; break; break; } } } } Loading