Fix CollapsingToolbarLayout not consuming insets
CollapsingToolbarLayout was set to no longer consumes
insets in Ib34219f1ba60901d973eea96c7453be46d9bf555.
Due to that the insets were then dispatched down to children
with fitSystemWindows="true". Unless those children had an
appropriate OnApplyWindowInsetsListener/fitSystemWindows,
they would get the default fitSystemWindows padding
functionality, which is unwanted here.
This CL fixes it by making CollapsingToolbarLayout consume
the insets.
BUG: 31011190
Change-Id: I178856473543eab4538db6194282a2d6cab632f9
diff --git a/design/src/android/support/design/widget/CollapsingToolbarLayout.java b/design/src/android/support/design/widget/CollapsingToolbarLayout.java
index 6d95dec..e139966 100644
--- a/design/src/android/support/design/widget/CollapsingToolbarLayout.java
+++ b/design/src/android/support/design/widget/CollapsingToolbarLayout.java
@@ -272,7 +272,9 @@
requestLayout();
}
- return insets;
+ // Consume the insets. This is done so that child views with fitSystemWindows=true do not
+ // get the default padding functionality from View
+ return insets.consumeSystemWindowInsets();
}
@Override
diff --git a/design/tests/src/android/support/design/widget/AppBarWithCollapsingToolbarTest.java b/design/tests/src/android/support/design/widget/AppBarWithCollapsingToolbarTest.java
index 4199fa9..d04a510 100644
--- a/design/tests/src/android/support/design/widget/AppBarWithCollapsingToolbarTest.java
+++ b/design/tests/src/android/support/design/widget/AppBarWithCollapsingToolbarTest.java
@@ -308,6 +308,13 @@
final ImageView parallaxImageView =
(ImageView) mCoordinatorLayout.findViewById(R.id.app_bar_image);
+ // We have not set any padding on the ImageView, so ensure that none is set via
+ // window insets handling
+ assertEquals(0, parallaxImageView.getPaddingLeft());
+ assertEquals(0, parallaxImageView.getPaddingTop());
+ assertEquals(0, parallaxImageView.getPaddingRight());
+ assertEquals(0, parallaxImageView.getPaddingBottom());
+
CollapsingToolbarLayout.LayoutParams parallaxImageViewLp =
(CollapsingToolbarLayout.LayoutParams) parallaxImageView.getLayoutParams();
assertEquals(CollapsingToolbarLayout.LayoutParams.COLLAPSE_MODE_PARALLAX,