From ad3cf5ad6b63a6d84e1b0b620063a4b7bfbe882b Mon Sep 17 00:00:00 2001 From: afohrman Date: Thu, 15 Dec 2022 23:17:23 +0000 Subject: [PATCH] [Adaptive][Side Sheet] Add detached variant of modal side sheet. PiperOrigin-RevId: 495709828 --- .../sidesheet/SideSheetMainDemoFragment.java | 35 ++++++++++++++++++- .../res/layout/cat_sidesheet_fragment.xml | 6 ++++ .../catalog/sidesheet/res/values/strings.xml | 7 ++++ .../catalog/sidesheet/res/values/themes.xml | 20 +++++++++++ .../material/sidesheet/res/values/styles.xml | 6 ++++ 5 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 catalog/java/io/material/catalog/sidesheet/res/values/themes.xml diff --git a/catalog/java/io/material/catalog/sidesheet/SideSheetMainDemoFragment.java b/catalog/java/io/material/catalog/sidesheet/SideSheetMainDemoFragment.java index 7fefcd88f3c..e7c2c9bfb2b 100644 --- a/catalog/java/io/material/catalog/sidesheet/SideSheetMainDemoFragment.java +++ b/catalog/java/io/material/catalog/sidesheet/SideSheetMainDemoFragment.java @@ -32,6 +32,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; +import androidx.annotation.StyleRes; import androidx.core.view.ViewCompat; import com.google.android.material.sidesheet.SideSheetBehavior; import com.google.android.material.sidesheet.SideSheetCallback; @@ -107,7 +108,6 @@ public View onCreateDemoView( R.id.side_sheet_title_text, R.string.cat_sidesheet_modal_title); - sideSheetDialog.setDismissWithSheetAnimationEnabled(true); View showModalSideSheetButton = view.findViewById(R.id.show_modal_side_sheet_button); showModalSideSheetButton.setOnClickListener(v -> sideSheetDialog.show()); @@ -123,6 +123,34 @@ public View onCreateDemoView( modalSideSheetCloseIconButton.setOnClickListener(v -> sideSheetDialog.hide()); } + // Set up detached modal side sheet. + SideSheetDialog detachedSideSheetDialog = + new SideSheetDialog(requireContext(), getDetachedModalThemeOverlayResId()); + + setUpModalSheet( + detachedSideSheetDialog, + R.layout.cat_sidesheet_content, + R.id.m3_side_sheet, + R.id.side_sheet_title_text, + R.string.cat_sidesheet_modal_detached_title); + + View showDetachedModalSideSheetButton = + view.findViewById(R.id.show_modal_detached_side_sheet_button); + showDetachedModalSideSheetButton.setOnClickListener(v -> detachedSideSheetDialog.show()); + + detachedSideSheetDialog + .getBehavior() + .addCallback( + createSideSheetCallback( + detachedSideSheetDialog.findViewById(R.id.side_sheet_state_text), + detachedSideSheetDialog.findViewById(R.id.side_sheet_slide_offset_text))); + + View detachedModalSideSheetCloseIconButton = + detachedSideSheetDialog.findViewById(R.id.close_icon_button); + if (detachedModalSideSheetCloseIconButton != null) { + detachedModalSideSheetCloseIconButton.setOnClickListener(v -> detachedSideSheetDialog.hide()); + } + // Set up coplanar side sheet. View coplanarSideSheet = setUpSideSheet( @@ -216,6 +244,11 @@ int getDemoContent() { return R.layout.cat_sidesheet_fragment; } + @StyleRes + private int getDetachedModalThemeOverlayResId() { + return R.style.ThemeOverlay_Catalog_SideSheet_Modal_Detached; + } + @Override public boolean shouldShowDefaultDemoActionBar() { return false; diff --git a/catalog/java/io/material/catalog/sidesheet/res/layout/cat_sidesheet_fragment.xml b/catalog/java/io/material/catalog/sidesheet/res/layout/cat_sidesheet_fragment.xml index 51f83d206fb..04e08c58a02 100644 --- a/catalog/java/io/material/catalog/sidesheet/res/layout/cat_sidesheet_fragment.xml +++ b/catalog/java/io/material/catalog/sidesheet/res/layout/cat_sidesheet_fragment.xml @@ -72,6 +72,12 @@ android:layout_height="wrap_content" android:layout_marginTop="16dp" android:text="@string/cat_sidesheet_modal_button_show_text" /> +