diff options
author | Alan Viverette <alanv@google.com> | 2015-06-25 19:57:01 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-25 19:57:03 +0000 |
commit | fdf102e62ddf04ed1a3157b00d4da5b56d298df3 (patch) | |
tree | d65f7d066ad2f60ce77bfc509a46897be969fe0b | |
parent | ab142f7f57c8fd805e6cf65fccf2c8d3eba285b5 (diff) | |
parent | 39fd902bdb329461f793e356306a912e1655c5c5 (diff) | |
download | frameworks_base-fdf102e62ddf04ed1a3157b00d4da5b56d298df3.zip frameworks_base-fdf102e62ddf04ed1a3157b00d4da5b56d298df3.tar.gz frameworks_base-fdf102e62ddf04ed1a3157b00d4da5b56d298df3.tar.bz2 |
Merge "Constrain child width and height to >= 0 in FrameLayout.onMeasure()" into mnc-dev
-rw-r--r-- | core/java/android/widget/FrameLayout.java | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/core/java/android/widget/FrameLayout.java b/core/java/android/widget/FrameLayout.java index 7ca450a..280ff15 100644 --- a/core/java/android/widget/FrameLayout.java +++ b/core/java/android/widget/FrameLayout.java @@ -230,28 +230,29 @@ public class FrameLayout extends ViewGroup { if (count > 1) { for (int i = 0; i < count; i++) { final View child = mMatchParentChildren.get(i); - final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams(); - int childWidthMeasureSpec; - int childHeightMeasureSpec; - + + final int childWidthMeasureSpec; if (lp.width == LayoutParams.MATCH_PARENT) { - childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(getMeasuredWidth() - - getPaddingLeftWithForeground() - getPaddingRightWithForeground() - - lp.leftMargin - lp.rightMargin, - MeasureSpec.EXACTLY); + final int width = Math.max(0, getMeasuredWidth() + - getPaddingLeftWithForeground() - getPaddingRightWithForeground() + - lp.leftMargin - lp.rightMargin); + childWidthMeasureSpec = MeasureSpec.makeMeasureSpec( + width, MeasureSpec.EXACTLY); } else { childWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec, getPaddingLeftWithForeground() + getPaddingRightWithForeground() + lp.leftMargin + lp.rightMargin, lp.width); } - + + final int childHeightMeasureSpec; if (lp.height == LayoutParams.MATCH_PARENT) { - childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(getMeasuredHeight() - - getPaddingTopWithForeground() - getPaddingBottomWithForeground() - - lp.topMargin - lp.bottomMargin, - MeasureSpec.EXACTLY); + final int height = Math.max(0, getMeasuredHeight() + - getPaddingTopWithForeground() - getPaddingBottomWithForeground() + - lp.topMargin - lp.bottomMargin); + childHeightMeasureSpec = MeasureSpec.makeMeasureSpec( + height, MeasureSpec.EXACTLY); } else { childHeightMeasureSpec = getChildMeasureSpec(heightMeasureSpec, getPaddingTopWithForeground() + getPaddingBottomWithForeground() + |