From 8726702fa29259491f887b8fafed03db02cd1941 Mon Sep 17 00:00:00 2001 From: pekingme <8545955+pekingme@users.noreply.github.com> Date: Fri, 20 Dec 2024 20:33:37 +0000 Subject: [PATCH] [TopAppBar] Added a demo to show case using collapsing toolbar layout with a toggleable button; reduced the number of menu items in all demos. PiperOrigin-RevId: 708397663 --- ...BarCollapsingFilledActionDemoFragment.java | 2 +- ...ollapsingToggleableActionDemoFragment.java | 69 ++++++++++++++++++ .../catalog/topappbar/TopAppBarFragment.java | 7 ++ ..._collapsing_toggleable_action_fragment.xml | 73 +++++++++++++++++++ .../topappbar/res/menu/cat_topappbar_menu.xml | 9 +-- .../catalog/topappbar/res/values/strings.xml | 1 + 6 files changed, 153 insertions(+), 8 deletions(-) create mode 100644 catalog/java/io/material/catalog/topappbar/TopAppBarCollapsingToggleableActionDemoFragment.java create mode 100644 catalog/java/io/material/catalog/topappbar/res/layout/cat_topappbar_collapsing_toggleable_action_fragment.xml diff --git a/catalog/java/io/material/catalog/topappbar/TopAppBarCollapsingFilledActionDemoFragment.java b/catalog/java/io/material/catalog/topappbar/TopAppBarCollapsingFilledActionDemoFragment.java index 1cadac9ab..b8e3fbff3 100644 --- a/catalog/java/io/material/catalog/topappbar/TopAppBarCollapsingFilledActionDemoFragment.java +++ b/catalog/java/io/material/catalog/topappbar/TopAppBarCollapsingFilledActionDemoFragment.java @@ -31,7 +31,7 @@ import com.google.android.material.snackbar.Snackbar; import io.material.catalog.feature.DemoFragment; /** - * A fragment that displays a large Collapsing Toolbar Top App Bar with a filled action button demo + * A fragment that displays a medium Collapsing Toolbar Top App Bar with a filled action button demo * for the Catalog app. */ public class TopAppBarCollapsingFilledActionDemoFragment extends DemoFragment { diff --git a/catalog/java/io/material/catalog/topappbar/TopAppBarCollapsingToggleableActionDemoFragment.java b/catalog/java/io/material/catalog/topappbar/TopAppBarCollapsingToggleableActionDemoFragment.java new file mode 100644 index 000000000..560ef590e --- /dev/null +++ b/catalog/java/io/material/catalog/topappbar/TopAppBarCollapsingToggleableActionDemoFragment.java @@ -0,0 +1,69 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.material.catalog.topappbar; + +import io.material.catalog.R; + +import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.google.android.material.button.MaterialButton; +import com.google.android.material.snackbar.Snackbar; +import io.material.catalog.feature.DemoFragment; + +/** + * A fragment that displays a medium Collapsing Toolbar Top App Bar with a toggleable action button + * demo for the Catalog app. + */ +public class TopAppBarCollapsingToggleableActionDemoFragment extends DemoFragment { + + @Override + @Nullable + public View onCreateDemoView( + @NonNull LayoutInflater layoutInflater, + @Nullable ViewGroup viewGroup, + @Nullable Bundle bundle) { + View view = + layoutInflater.inflate( + R.layout.cat_topappbar_collapsing_toggleable_action_fragment, viewGroup, false); + + Toolbar toolbar = view.findViewById(R.id.toolbar); + AppCompatActivity activity = (AppCompatActivity) getActivity(); + activity.setSupportActionBar(toolbar); + + MaterialButton actionButton = view.findViewById(R.id.action_button); + actionButton.setOnClickListener( + v -> + Snackbar.make( + v, + (actionButton.isChecked() ? "Marked as favorite." : "Marked as not favorite"), + Snackbar.LENGTH_SHORT) + .show()); + + return view; + } + + @Override + public boolean shouldShowDefaultDemoActionBar() { + return false; + } +} diff --git a/catalog/java/io/material/catalog/topappbar/TopAppBarFragment.java b/catalog/java/io/material/catalog/topappbar/TopAppBarFragment.java index a5d824530..71d405af4 100644 --- a/catalog/java/io/material/catalog/topappbar/TopAppBarFragment.java +++ b/catalog/java/io/material/catalog/topappbar/TopAppBarFragment.java @@ -139,6 +139,13 @@ public class TopAppBarFragment extends DemoLandingFragment { public Fragment createFragment() { return new TopAppBarCollapsingFilledActionDemoFragment(); } + }, + new Demo(R.string.cat_topappbar_collapsing_with_toggleable_action_demo_title) { + @Nullable + @Override + public Fragment createFragment() { + return new TopAppBarCollapsingToggleableActionDemoFragment(); + } }); } diff --git a/catalog/java/io/material/catalog/topappbar/res/layout/cat_topappbar_collapsing_toggleable_action_fragment.xml b/catalog/java/io/material/catalog/topappbar/res/layout/cat_topappbar_collapsing_toggleable_action_fragment.xml new file mode 100644 index 000000000..85ef4ba23 --- /dev/null +++ b/catalog/java/io/material/catalog/topappbar/res/layout/cat_topappbar_collapsing_toggleable_action_fragment.xml @@ -0,0 +1,73 @@ + + + + + + + + + +