From f782e60efc09f210643432f31b4c18026d7716d6 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Thu, 25 Jun 2009 15:26:49 -0700 Subject: Improve handling of FILL_PARENT in RelativeLayout. This was causing trouble with VideoView, in Gallery in particular. --- core/java/android/widget/RelativeLayout.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java index 8b2299a8d804..12bb01c18b52 100644 --- a/core/java/android/widget/RelativeLayout.java +++ b/core/java/android/widget/RelativeLayout.java @@ -358,7 +358,7 @@ public class RelativeLayout extends ViewGroup { LayoutParams params = (LayoutParams) child.getLayoutParams(); applyHorizontalSizeRules(params, myWidth); - measureChildHorizontal(child, params, myWidth); + measureChildHorizontal(child, params, myWidth, myHeight); if (positionChildHorizontal(child, params, myWidth, isWrapContentWidth)) { offsetHorizontalAxis = true; } @@ -550,13 +550,18 @@ public class RelativeLayout extends ViewGroup { child.measure(childWidthMeasureSpec, childHeightMeasureSpec); } - private void measureChildHorizontal(View child, LayoutParams params, int myWidth) { + private void measureChildHorizontal(View child, LayoutParams params, int myWidth, int myHeight) { int childWidthMeasureSpec = getChildMeasureSpec(params.mLeft, params.mRight, params.width, params.leftMargin, params.rightMargin, mPaddingLeft, mPaddingRight, myWidth); - int childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + int childHeightMeasureSpec; + if (params.width == LayoutParams.FILL_PARENT) { + childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(MeasureSpec.EXACTLY, myHeight); + } else { + childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + } child.measure(childWidthMeasureSpec, childHeightMeasureSpec); } -- cgit v1.2.3-59-g8ed1b