diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index 34929f261b8b4..880e55847a461 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -407,6 +407,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable private boolean mBackwardScrollable; private NotificationShelf mShelf; private int mMaxDisplayedNotifications = -1; + private float mKeyguardBottomPadding = -1; private int mStatusBarHeight; private int mMinInteractionHeight; private final Rect mClipRect = new Rect(); @@ -742,6 +743,16 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable mDebugPaint.setColor(Color.YELLOW); canvas.drawLine(0, y, getWidth(), y, mDebugPaint); + y = (int) mMaxLayoutHeight; + mDebugPaint.setColor(Color.MAGENTA); + canvas.drawLine(0, y, getWidth(), y, mDebugPaint); + + if (mKeyguardBottomPadding >= 0) { + y = getHeight() - (int) mKeyguardBottomPadding; + mDebugPaint.setColor(Color.GRAY); + canvas.drawLine(0, y, getWidth(), y, mDebugPaint); + } + y = getHeight() - getEmptyBottomMargin(); mDebugPaint.setColor(Color.GREEN); canvas.drawLine(0, y, getWidth(), y, mDebugPaint); @@ -4784,6 +4795,16 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable } } + /** + * This is used for debugging only; it will be used to draw the otherwise invisible line which + * NotificationPanelViewController treats as the bottom when calculating how many notifications + * appear on the keyguard. + * Setting a negative number will disable rendering this line. + */ + public void setKeyguardBottomPadding(float keyguardBottomPadding) { + mKeyguardBottomPadding = keyguardBottomPadding; + } + @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) public void setShouldShowShelfOnly(boolean shouldShowShelfOnly) { mShouldShowShelfOnly = shouldShowShelfOnly; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java index 417418af477f8..a865c3a5e3f89 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java @@ -1218,6 +1218,16 @@ public class NotificationStackScrollLayoutController { mNotificationListContainer.setMaxDisplayedNotifications(maxNotifications); } + /** + * This is used for debugging only; it will be used to draw the otherwise invisible line which + * NotificationPanelViewController treats as the bottom when calculating how many notifications + * appear on the keyguard. + * Setting a negative number will disable rendering this line. + */ + public void setKeyguardBottomPadding(float keyguardBottomPadding) { + mView.setKeyguardBottomPadding(keyguardBottomPadding); + } + public RemoteInputController.Delegate createDelegate() { return new RemoteInputController.Delegate() { public void setRemoteInputActive(NotificationEntry entry, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index 2f4b036be4811..66d5960f7be00 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -340,6 +340,8 @@ public class NotificationPanelViewController extends PanelViewController { private final SplitShadeHeaderController mSplitShadeHeaderController; private final RecordingController mRecordingController; private boolean mShouldUseSplitNotificationShade; + // The bottom padding reserved for elements of the keyguard measuring notifications + private float mKeyguardNotificationBottomPadding; // Current max allowed keyguard notifications determined by measuring the panel private int mMaxAllowedKeyguardNotifications; @@ -1215,9 +1217,12 @@ public class NotificationPanelViewController extends PanelViewController { if (mKeyguardShowing && !mKeyguardBypassController.getBypassEnabled()) { mNotificationStackScrollLayoutController.setMaxDisplayedNotifications( mMaxAllowedKeyguardNotifications); + mNotificationStackScrollLayoutController.setKeyguardBottomPadding( + mKeyguardNotificationBottomPadding); } else { // no max when not on the keyguard mNotificationStackScrollLayoutController.setMaxDisplayedNotifications(-1); + mNotificationStackScrollLayoutController.setKeyguardBottomPadding(-1f); } } @@ -1422,6 +1427,7 @@ public class NotificationPanelViewController extends PanelViewController { float bottomPadding = Math.max(mIndicationBottomPadding, mAmbientIndicationBottomPadding); bottomPadding = Math.max(lockIconPadding, bottomPadding); + mKeyguardNotificationBottomPadding = bottomPadding; float availableSpace = mNotificationStackScrollLayoutController.getHeight()