From 2901dca95e739c9321bc32f65b3b6d0f836c43a3 Mon Sep 17 00:00:00 2001 From: pekingme <8545955+pekingme@users.noreply.github.com> Date: Fri, 23 Aug 2024 22:22:06 +0000 Subject: [PATCH] [ButtonGroup] Added more variants in catalog. PiperOrigin-RevId: 666940948 --- .../button/ButtonGroupDemoFragment.java | 37 ++-- .../catalog/button/ButtonsFragment.java | 20 +- .../cat_button_group_content_icon_only.xml | 195 ++++++++++++++++++ .../cat_button_group_content_label_only.xml | 133 ++++++++++++ .../layout/cat_button_group_content_mixed.xml | 178 ++++++++++++++++ .../res/layout/cat_buttons_group_fragment.xml | 127 +----------- .../res/layout/cat_icon_buttons_content.xml | 16 +- .../res/layout/cat_label_buttons_content.xml | 8 +- .../layout/cat_label_icon_buttons_content.xml | 18 +- .../catalog/button/res/values/strings.xml | 3 + 10 files changed, 567 insertions(+), 168 deletions(-) create mode 100644 catalog/java/io/material/catalog/button/res/layout/cat_button_group_content_icon_only.xml create mode 100644 catalog/java/io/material/catalog/button/res/layout/cat_button_group_content_label_only.xml create mode 100644 catalog/java/io/material/catalog/button/res/layout/cat_button_group_content_mixed.xml diff --git a/catalog/java/io/material/catalog/button/ButtonGroupDemoFragment.java b/catalog/java/io/material/catalog/button/ButtonGroupDemoFragment.java index bf8a0676668..c8577828196 100644 --- a/catalog/java/io/material/catalog/button/ButtonGroupDemoFragment.java +++ b/catalog/java/io/material/catalog/button/ButtonGroupDemoFragment.java @@ -24,10 +24,9 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.ViewGroup.LayoutParams; +import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.google.android.material.button.MaterialButton; import com.google.android.material.button.MaterialButtonGroup; import com.google.android.material.materialswitch.MaterialSwitch; import io.material.catalog.feature.DemoFragment; @@ -37,8 +36,6 @@ /** A fragment that displays a button group demo for the Catalog app. */ public class ButtonGroupDemoFragment extends DemoFragment { - private int defaultInset; - /** Create a Demo View with different types of {@link MaterialButtonGroup}. */ @Nullable @Override @@ -49,25 +46,21 @@ public View onCreateDemoView( View view = layoutInflater.inflate( R.layout.cat_buttons_group_fragment, viewGroup, /* attachToRoot= */ false); + + ViewGroup content = view.findViewById(R.id.button_group_content); + layoutInflater.inflate(getIconOnlyButtonGroupContent(), content, /* attachToRoot= */ true); + layoutInflater.inflate(getLabelOnlyButtonGroupContent(), content, /* attachToRoot= */ true); + layoutInflater.inflate(getMixedButtonGroupContent(), content, /* attachToRoot= */ true); + List buttonGroups = DemoUtils.findViewsWithType(view, MaterialButtonGroup.class); - defaultInset = getResources().getDimensionPixelSize(R.dimen.mtrl_btn_inset); - MaterialSwitch verticalOrientationToggle = view.findViewById(R.id.orientation_switch_toggle); verticalOrientationToggle.setOnCheckedChangeListener( (buttonView, isChecked) -> { for (MaterialButtonGroup buttonGroup : buttonGroups) { int orientation = isChecked ? VERTICAL : HORIZONTAL; buttonGroup.setOrientation(orientation); - for (int i = 0; i < buttonGroup.getChildCount(); ++i) { - int inset = getInsetForOrientation(orientation); - MaterialButton button = (MaterialButton) buttonGroup.getChildAt(i); - button.setInsetBottom(inset); - button.setInsetTop(inset); - adjustParams(button.getLayoutParams(), orientation); - } - buttonGroup.requestLayout(); } }); @@ -83,12 +76,18 @@ public View onCreateDemoView( return view; } - private int getInsetForOrientation(int orientation) { - return orientation == VERTICAL ? 0 : defaultInset; + @LayoutRes + protected int getIconOnlyButtonGroupContent() { + return R.layout.cat_button_group_content_icon_only; + } + + @LayoutRes + protected int getLabelOnlyButtonGroupContent() { + return R.layout.cat_button_group_content_label_only; } - private static void adjustParams(LayoutParams layoutParams, int orientation) { - layoutParams.width = - orientation == VERTICAL ? LayoutParams.MATCH_PARENT : LayoutParams.WRAP_CONTENT; + @LayoutRes + protected int getMixedButtonGroupContent() { + return R.layout.cat_button_group_content_mixed; } } diff --git a/catalog/java/io/material/catalog/button/ButtonsFragment.java b/catalog/java/io/material/catalog/button/ButtonsFragment.java index 5d948500c30..0666c05c37c 100644 --- a/catalog/java/io/material/catalog/button/ButtonsFragment.java +++ b/catalog/java/io/material/catalog/button/ButtonsFragment.java @@ -19,6 +19,7 @@ import io.material.catalog.R; import androidx.fragment.app.Fragment; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import dagger.Provides; import dagger.android.ContributesAndroidInjector; @@ -57,13 +58,7 @@ public Fragment createFragment() { @Override public List getAdditionalDemos() { return Arrays.asList( - new Demo(R.string.cat_buttons_group) { - @Nullable - @Override - public Fragment createFragment() { - return new ButtonGroupDemoFragment(); - } - }, + getButtonGroupDemo(), new Demo(R.string.cat_buttons_toggle_group) { @Nullable @Override @@ -73,6 +68,17 @@ public Fragment createFragment() { }); } + @NonNull + protected Demo getButtonGroupDemo() { + return new Demo(R.string.cat_buttons_group) { + @Nullable + @Override + public Fragment createFragment() { + return new ButtonGroupDemoFragment(); + } + }; + } + /** The Dagger module for {@link ButtonsFragment} dependencies. */ @dagger.Module public abstract static class Module { diff --git a/catalog/java/io/material/catalog/button/res/layout/cat_button_group_content_icon_only.xml b/catalog/java/io/material/catalog/button/res/layout/cat_button_group_content_icon_only.xml new file mode 100644 index 00000000000..a8eb97f25cc --- /dev/null +++ b/catalog/java/io/material/catalog/button/res/layout/cat_button_group_content_icon_only.xml @@ -0,0 +1,195 @@ + + + + + + +