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 f22c139b34ea6..4bd2716d32c14 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 @@ -412,6 +412,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(); @@ -736,6 +737,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); @@ -4771,6 +4782,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 a92682a76a9ca..a47afb2e82ec7 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 @@ -1204,6 +1204,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 920e2a55a89c8..591d46b3046c8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -332,6 +332,8 @@ public class NotificationPanelViewController extends PanelViewController { private final LockscreenShadeTransitionController mLockscreenShadeTransitionController; private final TapAgainViewController mTapAgainViewController; 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; @@ -1189,9 +1191,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); } } @@ -1393,6 +1398,7 @@ public class NotificationPanelViewController extends PanelViewController { float bottomPadding = Math.max(mIndicationBottomPadding, mAmbientIndicationBottomPadding); bottomPadding = Math.max(lockIconPadding, bottomPadding); + mKeyguardNotificationBottomPadding = bottomPadding; float availableSpace = mNotificationStackScrollLayoutController.getHeight()