From 71f014fa41fc4bd6e5bcdd027c00aec44ddcb251 Mon Sep 17 00:00:00 2001 From: hunterstich Date: Tue, 16 Dec 2025 15:08:41 +0000 Subject: [PATCH] [Snackbar] Added optional close icon PiperOrigin-RevId: 845256053 --- .../snackbar/SnackbarMainDemoFragment.java | 31 +++++- .../snackbar/res/drawable/ic_cancel_24.xml | 27 +++++ .../cat_snackbar_main_demo_fragment.xml | 5 + .../catalog/snackbar/res/values/dimens.xml | 20 ++++ .../catalog/snackbar/res/values/strings.xml | 9 +- .../catalog/snackbar/res/values/styles.xml | 4 +- docs/components/Snackbar.md | 31 +++++- .../button/res/drawable/mtrl_close_24px.xml | 27 +++++ .../material/button/res/values/strings.xml | 1 + .../material/button/res/values/styles.xml | 17 ++++ .../dialog/res/values/themes_base.xml | 4 + .../snackbar/BaseTransientBottomBar.java | 22 +++++ .../android/material/snackbar/Snackbar.java | 98 +++++++++++++++++++ .../snackbar/SnackbarContentLayout.java | 7 ++ .../snackbar/res-public/values/public.xml | 1 + .../layout/mtrl_layout_snackbar_include.xml | 11 ++- .../material/snackbar/res/values/attrs.xml | 2 + .../material/theme/res/values/themes_base.xml | 4 + .../material/snackbar/SnackbarTest.java | 44 ++++++--- 19 files changed, 343 insertions(+), 22 deletions(-) create mode 100644 catalog/java/io/material/catalog/snackbar/res/drawable/ic_cancel_24.xml create mode 100644 catalog/java/io/material/catalog/snackbar/res/values/dimens.xml create mode 100644 lib/java/com/google/android/material/button/res/drawable/mtrl_close_24px.xml diff --git a/catalog/java/io/material/catalog/snackbar/SnackbarMainDemoFragment.java b/catalog/java/io/material/catalog/snackbar/SnackbarMainDemoFragment.java index 737d6152f..e8200f703 100644 --- a/catalog/java/io/material/catalog/snackbar/SnackbarMainDemoFragment.java +++ b/catalog/java/io/material/catalog/snackbar/SnackbarMainDemoFragment.java @@ -19,6 +19,7 @@ package io.material.catalog.snackbar; import io.material.catalog.R; import android.content.Context; +import android.graphics.Color; import android.os.Bundle; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; @@ -89,6 +90,7 @@ public class SnackbarMainDemoFragment extends DemoFragment { Snackbar.LENGTH_SHORT) .setAction(R.string.cat_snackbar_action_title, a -> {}) .setTextMaxLines(5) + .setCloseIconVisible(true) .show(); }); @@ -103,12 +105,39 @@ public class SnackbarMainDemoFragment extends DemoFragment { Context c = new ContextThemeWrapper( v.getContext(), R.style.ThemeOverlay_Catalog_SnackbarWithCustomShape); - Snackbar.make( + Snackbar snackbar = Snackbar.make( c, coordinatorLayout, getString(R.string.cat_snackbar_custom_shape_message), Snackbar.LENGTH_SHORT) .setAction("Done", a -> {}) + .setCloseIconVisible(/* visible= */ true) + .setCloseIconResource(R.drawable.ic_cancel_24) + .setCloseIconTint(Color.GREEN); + // Setting the close icon to visible removes the snackbar layout's end padding. To + // customize this, get the snackbar's view and set the end padding to a value + // that fits nicely with the custom shape and icon. + View snackbarLayout = snackbar.getView(); + snackbarLayout.setPaddingRelative( + snackbarLayout.getPaddingStart(), + snackbarLayout.getPaddingTop(), + getResources().getDimensionPixelSize( + R.dimen.cat_snackbar_custom_shape_end_padding), + snackbarLayout.getPaddingBottom() + ); + snackbar.show(); + }); + + // Snackbar with close icon + view.findViewById(R.id.with_close_button) + .setOnClickListener( + v -> { + Snackbar.make( + coordinatorLayout, + R.string.cat_snackbar_with_close_message, + Snackbar.LENGTH_INDEFINITE) + .setAction(R.string.cat_snackbar_action_title, a -> {}) + .setCloseIconVisible(true) .show(); }); } diff --git a/catalog/java/io/material/catalog/snackbar/res/drawable/ic_cancel_24.xml b/catalog/java/io/material/catalog/snackbar/res/drawable/ic_cancel_24.xml new file mode 100644 index 000000000..0ee3f8faf --- /dev/null +++ b/catalog/java/io/material/catalog/snackbar/res/drawable/ic_cancel_24.xml @@ -0,0 +1,27 @@ + + + + + + + diff --git a/catalog/java/io/material/catalog/snackbar/res/layout/cat_snackbar_main_demo_fragment.xml b/catalog/java/io/material/catalog/snackbar/res/layout/cat_snackbar_main_demo_fragment.xml index f707e6abe..3d58dbe16 100644 --- a/catalog/java/io/material/catalog/snackbar/res/layout/cat_snackbar_main_demo_fragment.xml +++ b/catalog/java/io/material/catalog/snackbar/res/layout/cat_snackbar_main_demo_fragment.xml @@ -52,6 +52,11 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cat_snackbar_custom_shape_button"/> +