diff options
| author | Romain Guy <romainguy@android.com> | 2009-06-24 14:37:03 -0700 |
|---|---|---|
| committer | Romain Guy <romainguy@android.com> | 2009-06-24 14:38:34 -0700 |
| commit | 956070383945db5f842ec05e507fd0233705738c (patch) | |
| tree | 99f568567125dcce1b2e62e4829cf6edff016798 /core/java/android/widget/RelativeLayout.java | |
| parent | ae7c980e8e5f5e8c78536f0b37fca50d1a7966ca (diff) | |
Reverse the order in which RelativeLayout measures and positions children.
This fixes RelativeLayouts with height=wrap_content.
Diffstat (limited to 'core/java/android/widget/RelativeLayout.java')
| -rw-r--r-- | core/java/android/widget/RelativeLayout.java | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java index 1f63e117a947..955475e401ff 100644 --- a/core/java/android/widget/RelativeLayout.java +++ b/core/java/android/widget/RelativeLayout.java @@ -349,9 +349,10 @@ public class RelativeLayout extends ViewGroup { View child = views[i]; if (child.getVisibility() != GONE) { LayoutParams params = (LayoutParams) child.getLayoutParams(); - applyVerticalSizeRules(params, myHeight); - measureChildVertical(child, params, myHeight); - positionChildVertical(child, params, myHeight); + + applyHorizontalSizeRules(params, myWidth); + measureChildHorizontal(child, params, myWidth); + positionChildHorizontal(child, params, myWidth); } } @@ -361,9 +362,10 @@ public class RelativeLayout extends ViewGroup { View child = views[i]; if (child.getVisibility() != GONE) { LayoutParams params = (LayoutParams) child.getLayoutParams(); - applyHorizontalSizeRules(params, myWidth); + + applyVerticalSizeRules(params, myHeight); measureChild(child, params, myWidth, myHeight); - positionChildHorizontal(child, params, myWidth); + positionChildVertical(child, params, myHeight); if (widthMode != MeasureSpec.EXACTLY) { width = Math.max(width, params.mRight); @@ -508,13 +510,13 @@ public class RelativeLayout extends ViewGroup { child.measure(childWidthMeasureSpec, childHeightMeasureSpec); } - private void measureChildVertical(View child, LayoutParams params, int myHeight) { - int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - int childHeightMeasureSpec = getChildMeasureSpec(params.mTop, - params.mBottom, params.height, - params.topMargin, params.bottomMargin, - mPaddingTop, mPaddingBottom, - myHeight); + private void measureChildHorizontal(View child, LayoutParams params, int myWidth) { + int childWidthMeasureSpec = getChildMeasureSpec(params.mLeft, + params.mRight, params.width, + params.leftMargin, params.rightMargin, + mPaddingLeft, mPaddingRight, + myWidth); + int childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); child.measure(childWidthMeasureSpec, childHeightMeasureSpec); } |
