Fix the height of NotificationContentView when there's no actions but bubble button

Added margin dynamic update for the condition when a NotificationContentView has bubble button but no actions

Bug: 244522899
Test: Visual:
1. Mock a message notification that has bubble button but no actions, there shouldn't be a 20dp margin between notification_action_list_margin_target and actions_container.
2. Mock a message notification that has bubble button and actions, there shouldn't be a 20dp margin between notification_action_list_margin_target and actions_container.
3. Mock a message notification that has no bubble button or actions, notification_action_list_margin_target should have a 20dp bottom margin.
Change-Id: Ie834309872c786dcf120023e7449099ee415e38e
This commit is contained in:
Yining Liu
2022-09-14 15:34:21 +00:00
parent e6fe7f5d45
commit a49c4c7b6d

View File

@@ -1369,6 +1369,8 @@ public class NotificationContentView extends FrameLayout implements Notification
}
ImageView bubbleButton = layout.findViewById(com.android.internal.R.id.bubble_button);
View actionContainer = layout.findViewById(com.android.internal.R.id.actions_container);
LinearLayout actionListMarginTarget = layout.findViewById(
com.android.internal.R.id.notification_action_list_margin_target);
if (bubbleButton == null || actionContainer == null) {
return;
}
@@ -1393,6 +1395,16 @@ public class NotificationContentView extends FrameLayout implements Notification
bubbleButton.setOnClickListener(mContainingNotification.getBubbleClickListener());
bubbleButton.setVisibility(VISIBLE);
actionContainer.setVisibility(VISIBLE);
// Set notification_action_list_margin_target's bottom margin to 0 when showing bubble
if (actionListMarginTarget != null) {
ViewGroup.LayoutParams lp = actionListMarginTarget.getLayoutParams();
if (lp instanceof ViewGroup.MarginLayoutParams) {
final ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) lp;
if (mlp.bottomMargin > 0) {
mlp.setMargins(mlp.leftMargin, mlp.topMargin, mlp.rightMargin, 0);
}
}
}
} else {
bubbleButton.setVisibility(GONE);
}