summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2015-06-25 19:57:01 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-06-25 19:57:03 +0000
commitfdf102e62ddf04ed1a3157b00d4da5b56d298df3 (patch)
treed65f7d066ad2f60ce77bfc509a46897be969fe0b
parentab142f7f57c8fd805e6cf65fccf2c8d3eba285b5 (diff)
parent39fd902bdb329461f793e356306a912e1655c5c5 (diff)
downloadframeworks_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.java27
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() +