Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4bb486c4 authored by Ioana Alexandru's avatar Ioana Alexandru
Browse files

[Notif redesign] Align expander vertically in one-line notifs

We already align it for header-only notifications, but collapsed
(headerless) notifications that don't have a text look similar and
didn't have the same centering behavior.

Fix: 398222413
Bug: 378660052
Test: tested manually, including updating the same notification
with/without a text to make sure the expander comes back to the right
place
Flag: android.app.notifications_redesign_templates

Change-Id: I86e50b4df03a94d45865c47c41b21663d78e77b3
parent 5faf193a
Loading
Loading
Loading
Loading
+24 −2
Original line number Diff line number Diff line
@@ -25,6 +25,9 @@ import static android.app.admin.DevicePolicyResources.Drawables.WORK_PROFILE_ICO
import static android.app.admin.DevicePolicyResources.UNDEFINED;
import static android.graphics.drawable.Icon.TYPE_URI;
import static android.graphics.drawable.Icon.TYPE_URI_ADAPTIVE_BITMAP;
import static android.util.TypedValue.COMPLEX_UNIT_PX;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
import static java.util.Objects.requireNonNull;
@@ -6001,6 +6004,8 @@ public class Notification implements Parcelable
                contentView.setViewVisibility(p.mTextViewId, View.GONE);
                contentView.setTextViewText(p.mTextViewId, null);
            }
            updateExpanderAlignment(contentView, p, hasSecondLine);
            setHeaderlessVerticalMargins(contentView, p, hasSecondLine);
            // Update margins to leave space for the top line (but not for headerless views like
@@ -6010,12 +6015,29 @@ public class Notification implements Parcelable
                int margin = getContentMarginTop(mContext,
                        R.dimen.notification_2025_content_margin_top);
                contentView.setViewLayoutMargin(R.id.notification_main_column,
                        RemoteViews.MARGIN_TOP, margin, TypedValue.COMPLEX_UNIT_PX);
                        RemoteViews.MARGIN_TOP, margin, COMPLEX_UNIT_PX);
            }
            return contentView;
        }
        private static void updateExpanderAlignment(RemoteViews contentView,
                StandardTemplateParams p, boolean hasSecondLine) {
            if (notificationsRedesignTemplates() && p.mHeaderless) {
                if (!hasSecondLine) {
                    // If there's no text, let's center the expand button vertically to align things
                    // more nicely. This is handled separately for notifications that use a
                    // NotificationHeaderView, see NotificationHeaderView#centerTopLine.
                    contentView.setViewLayoutHeight(R.id.expand_button, MATCH_PARENT,
                            COMPLEX_UNIT_PX);
                } else {
                    // Otherwise, just use the default height for the button to keep it top-aligned.
                    contentView.setViewLayoutHeight(R.id.expand_button, WRAP_CONTENT,
                            COMPLEX_UNIT_PX);
                }
            }
        }
        private static void setHeaderlessVerticalMargins(RemoteViews contentView,
                StandardTemplateParams p, boolean hasSecondLine) {
            if (Flags.notificationsRedesignTemplates() || !p.mHeaderless) {
@@ -9560,7 +9582,7 @@ public class Notification implements Parcelable
                int marginStart = res.getDimensionPixelSize(
                        R.dimen.notification_2025_content_margin_start);
                contentView.setViewLayoutMargin(R.id.title,
                        RemoteViews.MARGIN_START, marginStart, TypedValue.COMPLEX_UNIT_PX);
                        RemoteViews.MARGIN_START, marginStart, COMPLEX_UNIT_PX);
            }
            if (isLegacyHeaderless) {
                // Collapsed legacy messaging style has a 1-line limit.