Fix bug 3312807 - Fix child margin measurement in FrameLayout

Change-Id: I5166d7b2d283c577d5f95a15b1626b068cfa6bc6
This commit is contained in:
Adam Powell
2011-01-08 16:44:07 -08:00
parent 00bba682ef
commit 2b6be701a9

View File

@@ -265,11 +265,13 @@ public class FrameLayout extends ViewGroup {
final View child = getChildAt(i);
if (mMeasureAllChildren || child.getVisibility() != GONE) {
measureChildWithMargins(child, widthMeasureSpec, 0, heightMeasureSpec, 0);
maxWidth = Math.max(maxWidth, child.getMeasuredWidth());
maxHeight = Math.max(maxHeight, child.getMeasuredHeight());
final LayoutParams lp = (LayoutParams) child.getLayoutParams();
maxWidth = Math.max(maxWidth,
child.getMeasuredWidth() + lp.leftMargin + lp.rightMargin);
maxHeight = Math.max(maxHeight,
child.getMeasuredHeight() + lp.topMargin + lp.bottomMargin);
childState = combineMeasuredStates(childState, child.getMeasuredState());
if (measureMatchParentChildren) {
final ViewGroup.LayoutParams lp = child.getLayoutParams();
if (lp.width == LayoutParams.MATCH_PARENT ||
lp.height == LayoutParams.MATCH_PARENT) {
mMatchParentChildren.add(child);