From 0a27c4865e5f3afe891680f687ac75c6a659fb84 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Fri, 26 Oct 2012 17:00:52 -0700 Subject: [PATCH] Fix measurement bug in keyguard/MultiPaneChallengeLayout Change-Id: Ifbcd32281f06e6c53e573998e7085d7d0542acac --- .../keyguard/MultiPaneChallengeLayout.java | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java b/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java index b6cada83e0ac0..3ccc7ea55ef88 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java @@ -221,30 +221,35 @@ public class MultiPaneChallengeLayout extends ViewGroup implements ChallengeLayo if (lp.centerWithinArea > 0) { if (mOrientation == HORIZONTAL) { adjustedWidthSpec = MeasureSpec.makeMeasureSpec( - (int) (width * lp.centerWithinArea + 0.5f), MeasureSpec.EXACTLY); - adjustedHeightSpec = heightSpec; - } else { - adjustedWidthSpec = widthSpec; + (int) ((width - widthUsed) * lp.centerWithinArea + 0.5f), + MeasureSpec.EXACTLY); adjustedHeightSpec = MeasureSpec.makeMeasureSpec( - (int) (height * lp.centerWithinArea + 0.5f), MeasureSpec.EXACTLY); + MeasureSpec.getSize(heightSpec) - heightUsed, MeasureSpec.EXACTLY); + } else { + adjustedWidthSpec = MeasureSpec.makeMeasureSpec( + MeasureSpec.getSize(widthSpec) - widthUsed, MeasureSpec.EXACTLY); + adjustedHeightSpec = MeasureSpec.makeMeasureSpec( + (int) ((height - heightUsed) * lp.centerWithinArea + 0.5f), + MeasureSpec.EXACTLY); } } else { - adjustedWidthSpec = widthSpec; - adjustedHeightSpec = heightSpec; + adjustedWidthSpec = MeasureSpec.makeMeasureSpec( + MeasureSpec.getSize(widthSpec) - widthUsed, MeasureSpec.EXACTLY); + adjustedHeightSpec = MeasureSpec.makeMeasureSpec( + MeasureSpec.getSize(heightSpec) - heightUsed, MeasureSpec.EXACTLY); } if (lp.maxWidth >= 0) { adjustedWidthSpec = MeasureSpec.makeMeasureSpec( - Math.min(lp.maxWidth, MeasureSpec.getSize(widthSpec)), + Math.min(lp.maxWidth, MeasureSpec.getSize(adjustedWidthSpec)), MeasureSpec.EXACTLY); } if (lp.maxHeight >= 0) { adjustedHeightSpec = MeasureSpec.makeMeasureSpec( - Math.min(lp.maxHeight, MeasureSpec.getSize(heightSpec)), + Math.min(lp.maxHeight, MeasureSpec.getSize(adjustedHeightSpec)), MeasureSpec.EXACTLY); } - measureChildWithMargins(child, adjustedWidthSpec, widthUsed, - adjustedHeightSpec, heightUsed); + measureChildWithMargins(child, adjustedWidthSpec, 0, adjustedHeightSpec, 0); } }