Apply layout param to NotificationShelf only when needed

Before, layout params were applied even when they stayed the same, causing a requestLayout that was propagating to the NotificationStackScrollLayout and remeasuring all notifications (even if it wasn't needed).

Bug: 245268301
Bug: 243647188
Test: Manually verified in a perfetto trace that no RequestLayout was propagated to NSSL after this change from the shelf. Currently there are no ways of writing tests, but I'm working at a way to enable us to make such kind of assertions, so I'll consider adding one when possible.
Change-Id: Ib3a360e705fe49cbff6f90ada0a52171ce9a5688
This commit is contained in:
Nicolo' Mazzucato
2022-11-15 13:45:51 +00:00
parent 1e20bf871c
commit e39a3e1f43

View File

@@ -132,8 +132,11 @@ public class NotificationShelf extends ActivatableNotificationView implements
mPaddingBetweenElements = res.getDimensionPixelSize(R.dimen.notification_divider_height);
ViewGroup.LayoutParams layoutParams = getLayoutParams();
layoutParams.height = res.getDimensionPixelOffset(R.dimen.notification_shelf_height);
setLayoutParams(layoutParams);
final int newShelfHeight = res.getDimensionPixelOffset(R.dimen.notification_shelf_height);
if (newShelfHeight != layoutParams.height) {
layoutParams.height = newShelfHeight;
setLayoutParams(layoutParams);
}
final int padding = res.getDimensionPixelOffset(R.dimen.shelf_icon_container_padding);
mShelfIcons.setPadding(padding, 0, padding, 0);