diff options
2 files changed, 19 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java index 54811f5783ae..4c241bd18c3c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -1421,7 +1421,8 @@ public class NotificationStackScrollLayout extends ViewGroup */ private int targetScrollForView(ExpandableView v, int positionInLinearLayout) { return positionInLinearLayout + v.getIntrinsicHeight() + - getImeInset() - getHeight() + getTopPadding(); + getImeInset() - getHeight() + + ((!isExpanded() && isPinnedHeadsUp(v)) ? mHeadsUpInset : getTopPadding()); } @Override @@ -2052,9 +2053,15 @@ public class NotificationStackScrollLayout extends ViewGroup } private int getScrollRange() { - int scrollRange = Math.max(0, mContentHeight - mMaxLayoutHeight); + // In current design, it only use the top HUN to treat all of HUNs + // although there are more than one HUNs + int contentHeight = mContentHeight; + if (!isExpanded() && mHeadsUpManager.hasPinnedHeadsUp()) { + contentHeight = mHeadsUpInset + getTopHeadsUpPinnedHeight(); + } + int scrollRange = Math.max(0, contentHeight - mMaxLayoutHeight); int imeInset = getImeInset(); - scrollRange += Math.min(imeInset, Math.max(0, mContentHeight - (getHeight() - imeInset))); + scrollRange += Math.min(imeInset, Math.max(0, contentHeight - (getHeight() - imeInset))); return scrollRange; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java index 0d50f5a9eef7..05870e851d14 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java @@ -473,6 +473,15 @@ public class StackScrollAlgorithm { childState.yTranslation = topState.yTranslation + topState.height - childState.height; } + + // heads up notification show and this row is the top entry of heads up + // notifications. i.e. this row should be the only one row that has input field + // To check if the row need to do translation according to scroll Y + // heads up show full of row's content and any scroll y indicate that the + // translationY need to move up the HUN. + if (!mIsExpanded && isTopEntry && ambientState.getScrollY() > 0) { + childState.yTranslation -= ambientState.getScrollY(); + } } if (row.isHeadsUpAnimatingAway()) { childState.hidden = false; |