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 @@ + + + + + + +