diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java index b3265524965f1..7f87c3c687d81 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/DragDownHelper.java @@ -169,21 +169,23 @@ public class DragDownHelper implements Gefingerpoken { ? RUBBERBAND_FACTOR_EXPANDABLE : RUBBERBAND_FACTOR_STATIC; float rubberband = heightDelta * rubberbandFactor; - if (expandable && (rubberband + child.getMinHeight()) > child.getMaxContentHeight()) { - float overshoot = (rubberband + child.getMinHeight()) - child.getMaxContentHeight(); + if (expandable + && (rubberband + child.getMinExpandHeight()) > child.getMaxContentHeight()) { + float overshoot = + (rubberband + child.getMinExpandHeight()) - child.getMaxContentHeight(); overshoot *= (1 - RUBBERBAND_FACTOR_STATIC); rubberband -= overshoot; } - child.setActualHeight((int) (child.getMinHeight() + rubberband)); + child.setActualHeight((int) (child.getMinExpandHeight() + rubberband)); } private void cancelExpansion(final ExpandableView child) { - if (child.getActualHeight() == child.getMinHeight()) { + if (child.getActualHeight() == child.getMinExpandHeight()) { mCallback.setUserLockedChild(child, false); return; } ObjectAnimator anim = ObjectAnimator.ofInt(child, "actualHeight", - child.getActualHeight(), child.getMinHeight()); + child.getActualHeight(), child.getMinExpandHeight()); anim.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); anim.setDuration(SPRING_BACK_ANIMATION_LENGTH_MS); anim.addListener(new AnimatorListenerAdapter() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java index 9799d75a890f1..939cacbbebfc1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java @@ -1221,8 +1221,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { @Override public int getMinExpandHeight() { - if (mIsSummaryWithChildren && !mOnKeyguard) { - return mChildrenContainer.getMinExpandHeight(); + if (mIsSummaryWithChildren && !mShowingPublic) { + return mChildrenContainer.getMinExpandHeight(mOnKeyguard); } return getMinHeight(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java index 030c8b737e844..123a5c39d61a4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java @@ -566,8 +566,28 @@ public class NotificationChildrenContainer extends ViewGroup { return getIntrinsicHeight(NUMBER_OF_CHILDREN_WHEN_COLLAPSED); } - public int getMinExpandHeight() { - return getIntrinsicHeight(getMaxAllowedVisibleChildren(true /* forceCollapsed */)); + public int getMinExpandHeight(boolean onKeyguard) { + int maxAllowedVisibleChildren = onKeyguard ? NUMBER_OF_CHILDREN_WHEN_COLLAPSED + : getMaxAllowedVisibleChildren(true /* forceCollapsed */); + int minExpandHeight = mNotificationHeaderHeight; + int visibleChildren = 0; + boolean firstChild = true; + int childCount = mChildren.size(); + for (int i = 0; i < childCount; i++) { + if (visibleChildren >= maxAllowedVisibleChildren) { + break; + } + if (!firstChild) { + minExpandHeight += mChildPadding; + } else { + firstChild = false; + } + ExpandableNotificationRow child = mChildren.get(i); + minExpandHeight += child.getMinHeight(); + visibleChildren++; + } + minExpandHeight += mCollapsedBottompadding; + return minExpandHeight; } public void setDark(boolean dark, boolean fade, long delay) {