Fixed a bug where the heads up had the wrong size
Change-Id: I05bc0e68bf4b9f786b9f0cb4466bba002a0fc4d4
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
index 4cc8bc1..2b93554 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
@@ -51,6 +51,8 @@
private static final int COLORED_DIVIDER_ALPHA = 0x7B;
private final LinearInterpolator mLinearInterpolator = new LinearInterpolator();
private final int mNotificationMinHeightLegacy;
+ private final int mMaxHeadsUpHeightLegacy;
+ private final int mMaxHeadsUpHeight;
private final int mNotificationMinHeight;
private final int mNotificationMaxHeight;
private int mRowMinHeight;
@@ -219,10 +221,15 @@
boolean beforeN = mEntry.targetSdk < Build.VERSION_CODES.N;
int minHeight = customView && beforeN && !mIsSummaryWithChildren ?
mNotificationMinHeightLegacy : mNotificationMinHeight;
+ boolean headsUpCustom = getPrivateLayout().getHeadsUpChild() != null &&
+ getPrivateLayout().getHeadsUpChild().getId()
+ != com.android.internal.R.id.status_bar_latest_event_content;
+ int headsUpheight = headsUpCustom && beforeN ? mMaxHeadsUpHeightLegacy
+ : mMaxHeadsUpHeight;
mRowMinHeight = minHeight;
mMaxViewHeight = mNotificationMaxHeight;
- mPrivateLayout.setSmallHeight(mRowMinHeight);
- mPublicLayout.setSmallHeight(mRowMinHeight);
+ mPrivateLayout.setHeights(mRowMinHeight, headsUpheight);
+ mPublicLayout.setHeights(mRowMinHeight, headsUpheight);
}
public StatusBarNotification getStatusBarNotification() {
@@ -386,6 +393,9 @@
}
public int getHeadsUpHeight() {
+ if (mIsSummaryWithChildren) {
+ return mChildrenContainer.getIntrinsicHeight();
+ }
return mHeadsUpHeight;
}
@@ -463,6 +473,10 @@
R.dimen.notification_min_height);
mNotificationMaxHeight = getResources().getDimensionPixelSize(
R.dimen.notification_max_height);
+ mMaxHeadsUpHeightLegacy = getResources().getDimensionPixelSize(
+ R.dimen.notification_max_heads_up_height_legacy);
+ mMaxHeadsUpHeight = getResources().getDimensionPixelSize(
+ R.dimen.notification_max_heads_up_height);
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
index ed75fed..2944c4f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
@@ -52,7 +52,6 @@
private static final int VISIBLE_TYPE_SINGLELINE = 3;
private final Rect mClipBounds = new Rect();
- private final int mHeadsUpHeight;
private final int mRoundRectRadius;
private final Interpolator mLinearInterpolator = new LinearInterpolator();
private final boolean mRoundRectClippingEnabled;
@@ -77,6 +76,7 @@
private boolean mShowingLegacyBackground;
private boolean mIsChildInGroup;
private int mSmallHeight;
+ private int mHeadsUpHeight;
private StatusBarNotification mStatusBarNotification;
private NotificationGroupManager mGroupManager;
@@ -103,7 +103,6 @@
super(context, attrs);
mHybridViewManager = new HybridNotificationViewManager(getContext(), this);
mFadePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.ADD));
- mHeadsUpHeight = getResources().getDimensionPixelSize(R.dimen.notification_mid_height);
mRoundRectRadius = getResources().getDimensionPixelSize(
R.dimen.notification_material_rounded_rect_radius);
mRoundRectClippingEnabled = getResources().getBoolean(
@@ -112,8 +111,9 @@
setOutlineProvider(mOutlineProvider);
}
- public void setSmallHeight(int smallHeight) {
+ public void setHeights(int smallHeight, int headsUpMaxHeight) {
mSmallHeight = smallHeight;
+ mHeadsUpHeight = headsUpMaxHeight;
}
@Override
@@ -150,7 +150,7 @@
ViewGroup.LayoutParams layoutParams = mHeadsUpChild.getLayoutParams();
if (layoutParams.height >= 0) {
// An actual height is set
- size = Math.min(maxSize, layoutParams.height);
+ size = Math.min(size, layoutParams.height);
}
mHeadsUpChild.measure(widthMeasureSpec,
MeasureSpec.makeMeasureSpec(size, MeasureSpec.AT_MOST));
@@ -283,10 +283,10 @@
}
public int getMaxHeight() {
- if (mIsHeadsUp && mHeadsUpChild != null) {
- return mHeadsUpChild.getHeight();
- } else if (mExpandedChild != null) {
+ if (mExpandedChild != null) {
return mExpandedChild.getHeight();
+ } else if (mIsHeadsUp && mHeadsUpChild != null) {
+ return mHeadsUpChild.getHeight();
}
return mSmallHeight;
}
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 4559955..2b71ce9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
@@ -332,7 +332,7 @@
if (!likeCollapsed && (mChildrenExpanded || mNotificationParent.isUserLocked())) {
return NUMBER_OF_CHILDREN_WHEN_CHILDREN_EXPANDED;
}
- if (mNotificationParent.isExpanded()) {
+ if (mNotificationParent.isExpanded() || mNotificationParent.isHeadsUp()) {
return NUMBER_OF_CHILDREN_WHEN_SYSTEM_EXPANDED;
}
return NUMBER_OF_CHILDREN_WHEN_COLLAPSED;