Skip to content

Commit 63bb499

Browse files
committed
[ButtonToggleGroup] Renamed insideCorner to innerCorner.
PiperOrigin-RevId: 639864920
1 parent 99e8044 commit 63bb499

File tree

8 files changed

+59
-44
lines changed

8 files changed

+59
-44
lines changed

catalog/java/io/material/catalog/button/ButtonToggleGroupDemoFragment.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import com.google.android.material.button.MaterialButton;
3232
import com.google.android.material.button.MaterialButtonToggleGroup;
3333
import com.google.android.material.materialswitch.MaterialSwitch;
34+
import com.google.android.material.shape.RelativeCornerSize;
3435
import com.google.android.material.slider.Slider;
3536
import com.google.android.material.snackbar.Snackbar;
3637
import io.material.catalog.feature.DemoFragment;
@@ -98,11 +99,11 @@ public View onCreateDemoView(
9899
});
99100
}
100101

101-
Slider insideCornerSizeSlider = view.findViewById(R.id.insideCornerSizeSlider);
102-
insideCornerSizeSlider.addOnChangeListener(
102+
Slider innerCornerSizeSlider = view.findViewById(R.id.innerCornerSizeSlider);
103+
innerCornerSizeSlider.addOnChangeListener(
103104
(slider, value, fromUser) -> {
104105
for (MaterialButtonToggleGroup toggleGroup : toggleGroups) {
105-
toggleGroup.setInsideCornerSizeInFraction(value / 100f);
106+
toggleGroup.setInnerCornerSize(new RelativeCornerSize(value / 100f));
106107
}
107108
});
108109

catalog/java/io/material/catalog/button/res/layout/cat_buttons_toggle_group_fragment.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,10 @@
150150
<TextView
151151
android:layout_width="wrap_content"
152152
android:layout_height="wrap_content"
153-
android:text="@string/cat_inside_corner_size_label"/>
153+
android:text="@string/cat_inner_corner_size_label"/>
154154

155155
<com.google.android.material.slider.Slider
156-
android:id="@+id/insideCornerSizeSlider"
156+
android:id="@+id/innerCornerSizeSlider"
157157
android:layout_width="match_parent"
158158
android:layout_height="wrap_content"
159159
android:valueFrom="0"

catalog/java/io/material/catalog/button/res/values/strings.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@
6060
<string name="cat_icon_only">Icon only</string>
6161
<string description="A label for a spacing slider [CHAR LIMIT=NONE]"
6262
name="cat_spacing_label">Spacing (dp)</string>
63-
<string description="A label for an inside corner size slider [CHAR LIMIT=NONE]"
64-
name="cat_inside_corner_size_label">Inside corners size (0 – 50%)</string>
63+
<string description="A label for an inner corner size slider [CHAR LIMIT=NONE]"
64+
name="cat_inner_corner_size_label">Inner corners size (0 – 50%)</string>
6565
<string name="cat_button_label_private">Private</string>
6666
<string name="cat_button_label_team">Team</string>
6767
<string name="cat_button_label_everyone">Everyone</string>

docs/components/Button.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -746,13 +746,13 @@ A toggle button has a shared stroked container, icons and/or text labels.
746746

747747
#### Selection attributes
748748

749-
Element | Attribute | Related method(s) | Default value
750-
------------------------------------- | ----------------------- | --------------------------------------------------------------------------------------- | -------------
751-
**Single selection** | `app:singleSelection` | `setSingleSelection`<br/>`isSingleSelection` | `false`
752-
**Selection required** | `app:selectionRequired` | `setSelectionRequired`<br/>`isSelectionRequired` | `false`
753-
**Enable the group and all children** | `android:enabled` | `setEnabled`<br/>`isEnabled` | `true`
754-
**Radius of inside corners** | `app:insideCornerSize` | `setInsideCornerSizeByPx`<br/>`setInsideCornerSizeByFraction`<br/>`getInsideCornerSize` | `0dp`
755-
**Spacing between buttons** | `android:spacing` | `setSpacing`<br/>`getSpacing` | `0dp`
749+
Element | Attribute | Related method(s) | Default value
750+
------------------------------------- | ----------------------- | ------------------------------------------------ | -------------
751+
**Single selection** | `app:singleSelection` | `setSingleSelection`<br/>`isSingleSelection` | `false`
752+
**Selection required** | `app:selectionRequired` | `setSelectionRequired`<br/>`isSelectionRequired` | `false`
753+
**Enable the group and all children** | `android:enabled` | `setEnabled`<br/>`isEnabled` | `true`
754+
**Size of inner corners** | `app:innerCornerSize` | `setInnerCornerSize`<br/>`getInnerCornerSize` | `0dp`
755+
**Spacing between buttons** | `android:spacing` | `setSpacing`<br/>`getSpacing` | `0dp`
756756

757757
#### Styles
758758

lib/java/com/google/android/material/button/MaterialButtonToggleGroup.java

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ public int compare(MaterialButton v1, MaterialButton v2) {
181181
private boolean singleSelection;
182182
private boolean selectionRequired;
183183

184-
@NonNull private CornerSize insideCornerSize;
184+
@NonNull private CornerSize innerCornerSize;
185185
@Px private int spacing;
186186

187187
@IdRes private final int defaultCheckId;
@@ -210,10 +210,10 @@ public MaterialButtonToggleGroup(
210210
attributes.getResourceId(R.styleable.MaterialButtonToggleGroup_checkedButton, View.NO_ID);
211211
selectionRequired =
212212
attributes.getBoolean(R.styleable.MaterialButtonToggleGroup_selectionRequired, false);
213-
insideCornerSize =
213+
innerCornerSize =
214214
ShapeAppearanceModel.getCornerSize(
215215
attributes,
216-
R.styleable.MaterialButtonToggleGroup_insideCornerSize,
216+
R.styleable.MaterialButtonToggleGroup_innerCornerSize,
217217
new AbsoluteCornerSize(0));
218218
spacing =
219219
attributes.getDimensionPixelSize(R.styleable.MaterialButtonToggleGroup_android_spacing, 0);
@@ -506,25 +506,42 @@ public void setSingleSelection(@BoolRes int id) {
506506
setSingleSelection(getResources().getBoolean(id));
507507
}
508508

509+
/**
510+
* Returns the spacing (in pixels) between each button in the group.
511+
*/
509512
@Px
510513
public int getSpacing() {
511514
return spacing;
512515
}
513516

517+
/**
518+
* Sets the spacing between each button in the group.
519+
*
520+
* @param spacing the spacing (in pixels) between each button in the group
521+
*/
514522
public void setSpacing(@Px int spacing) {
515523
this.spacing = spacing;
516524
invalidate();
517525
requestLayout();
518526
}
519527

520-
public void setInsideCornerSizeInPx(@Px int px) {
521-
insideCornerSize = new AbsoluteCornerSize(px);
522-
updateChildShapes();
523-
invalidate();
528+
/** Returns the inner corner size of the group. */
529+
@NonNull
530+
public CornerSize getInnerCornerSize() {
531+
return innerCornerSize;
524532
}
525533

526-
public void setInsideCornerSizeInFraction(float fraction) {
527-
insideCornerSize = new RelativeCornerSize(fraction);
534+
/**
535+
* Sets the inner corner size of the group.
536+
*
537+
* <p>Can set as an {@link AbsoluteCornerSize} or {@link RelativeCornerSize}. Don't set relative
538+
* corner size larger than 50% or absolute corner size larger than half height to avoid corner
539+
* overlapping.
540+
*
541+
* @param cornerSize the inner corner size of the group
542+
*/
543+
public void setInnerCornerSize(@NonNull CornerSize cornerSize) {
544+
innerCornerSize = cornerSize;
528545
updateChildShapes();
529546
invalidate();
530547
}
@@ -683,7 +700,7 @@ private int getIndexWithinVisibleButtons(@Nullable View child) {
683700
private CornerData getNewCornerData(
684701
int index, int firstVisibleChildIndex, int lastVisibleChildIndex) {
685702
CornerData cornerData = originalCornerData.get(index);
686-
CornerData insideCornerData = new CornerData(insideCornerSize);
703+
CornerData innerCornerData = new CornerData(innerCornerSize);
687704

688705
// If only one (visible) child exists, use its original corners
689706
if (firstVisibleChildIndex == lastVisibleChildIndex) {
@@ -693,17 +710,17 @@ private CornerData getNewCornerData(
693710
boolean isHorizontal = getOrientation() == HORIZONTAL;
694711
if (index == firstVisibleChildIndex) {
695712
return isHorizontal
696-
? CornerData.start(cornerData, insideCornerData, this)
697-
: CornerData.top(cornerData, insideCornerData);
713+
? CornerData.start(cornerData, innerCornerData, this)
714+
: CornerData.top(cornerData, innerCornerData);
698715
}
699716

700717
if (index == lastVisibleChildIndex) {
701718
return isHorizontal
702-
? CornerData.end(cornerData, insideCornerData, this)
703-
: CornerData.bottom(cornerData, insideCornerData);
719+
? CornerData.end(cornerData, innerCornerData, this)
720+
: CornerData.bottom(cornerData, innerCornerData);
704721
}
705722

706-
return insideCornerData;
723+
return innerCornerData;
707724
}
708725

709726
private static void updateBuilderWithCornerData(

lib/java/com/google/android/material/button/res-public/values/public.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<public name="iconTint" type="attr"/>
2525
<public name="iconTintMode" type="attr"/>
2626
<public name="toggleCheckedStateOnClick" type="attr"/>
27-
<public name="insideCornerSize" type="attr"/>
27+
<public name="innerCornerSize" type="attr"/>
2828
<public name="materialButtonStyle" type="attr"/>
2929
<public name="materialIconButtonStyle" type="attr"/>
3030
<public name="materialIconButtonFilledStyle" type="attr"/>

lib/java/com/google/android/material/button/res/values/attrs.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@
114114
<attr name="checkedButton" format="reference"/>
115115
<!-- Whether this MaterialButtonToggleGroup and all its children are enabled -->
116116
<attr name="android:enabled" />
117-
<!-- The radius of all inside corners between inclusive buttons. -->
118-
<attr name="insideCornerSize" format="dimension|fraction"/>
117+
<!-- The radius of all inner corners between inclusive buttons. -->
118+
<attr name="innerCornerSize" format="dimension|fraction"/>
119119
<!-- The spacing between inclusive buttons. Outlines will overlap, when set to zero or negative. -->
120120
<attr name="android:spacing"/>
121121
</declare-styleable>

lib/javatests/com/google/android/material/button/MaterialButtonToggleGroupTest.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import android.widget.ToggleButton;
3535
import androidx.test.core.app.ApplicationProvider;
3636
import com.google.android.material.button.MaterialButtonToggleGroup.OnButtonCheckedListener;
37+
import com.google.android.material.shape.AbsoluteCornerSize;
3738
import com.google.android.material.shape.ShapeAppearanceModel;
3839
import java.util.List;
3940
import org.junit.Before;
@@ -84,13 +85,12 @@ public void correctShapeAppearances_inToggle_afterAdding() {
8485
}
8586

8687
@Test
87-
public void correctShapeAppearances_inToggle_afterAdding_withInsideCorner() {
88+
public void correctShapeAppearances_inToggle_afterAdding_withInnerCorner() {
8889
MaterialButton firstChild = (MaterialButton) toggleGroup.getChildAt(0);
8990
MaterialButton middleChild = (MaterialButton) toggleGroup.getChildAt(1);
9091
MaterialButton lastChild = (MaterialButton) toggleGroup.getChildAt(2);
9192

92-
toggleGroup.setInsideCornerSizeInPx(5);
93-
toggleGroup.updateChildShapes();
93+
toggleGroup.setInnerCornerSize(new AbsoluteCornerSize(5));
9494
assertShapeAppearance(firstChild.getShapeAppearanceModel(), CORNER_SIZE, CORNER_SIZE, 5, 5);
9595
assertShapeAppearance(middleChild.getShapeAppearanceModel(), 5, 5, 5, 5);
9696
assertShapeAppearance(lastChild.getShapeAppearanceModel(), 5, 5, CORNER_SIZE, CORNER_SIZE);
@@ -110,14 +110,13 @@ public void correctShapeAppearances_inToggle_afterAddingInVertical() {
110110
}
111111

112112
@Test
113-
public void correctShapeAppearances_inToggle_afterAddingInVertical_withInsideCorner() {
113+
public void correctShapeAppearances_inToggle_afterAddingInVertical_withInnerCorner() {
114114
toggleGroup.setOrientation(LinearLayout.VERTICAL);
115115
MaterialButton firstChild = (MaterialButton) toggleGroup.getChildAt(0);
116116
MaterialButton middleChild = (MaterialButton) toggleGroup.getChildAt(1);
117117
MaterialButton lastChild = (MaterialButton) toggleGroup.getChildAt(2);
118118

119-
toggleGroup.setInsideCornerSizeInPx(5);
120-
toggleGroup.updateChildShapes();
119+
toggleGroup.setInnerCornerSize(new AbsoluteCornerSize(5));
121120
assertShapeAppearance(firstChild.getShapeAppearanceModel(), CORNER_SIZE, 5, CORNER_SIZE, 5);
122121
assertShapeAppearance(middleChild.getShapeAppearanceModel(), 5, 5, 5, 5);
123122
assertShapeAppearance(lastChild.getShapeAppearanceModel(), 5, CORNER_SIZE, 5, CORNER_SIZE);
@@ -139,15 +138,14 @@ public void correctShapeAppearances_inToggle_afterSettingViewToGone() {
139138
}
140139

141140
@Test
142-
public void correctShapeAppearances_inToggle_afterSettingViewToGone_withInsideCorner() {
141+
public void correctShapeAppearances_inToggle_afterSettingViewToGone_withInnerCorner() {
143142
toggleGroup.setOrientation(LinearLayout.VERTICAL);
144143
MaterialButton firstChild = (MaterialButton) toggleGroup.getChildAt(0);
145144
MaterialButton middleChild = (MaterialButton) toggleGroup.getChildAt(1);
146145
MaterialButton lastChild = (MaterialButton) toggleGroup.getChildAt(2);
147146

148147
firstChild.setVisibility(GONE);
149-
toggleGroup.setInsideCornerSizeInPx(5);
150-
toggleGroup.updateChildShapes();
148+
toggleGroup.setInnerCornerSize(new AbsoluteCornerSize(5));
151149

152150
// Now middle and end child has rounded corners.
153151
assertShapeAppearance(middleChild.getShapeAppearanceModel(), CORNER_SIZE, 5, CORNER_SIZE, 5);
@@ -169,15 +167,14 @@ public void correctShapeAppearances_inToggle_whenOneVisibleButton() {
169167
}
170168

171169
@Test
172-
public void correctShapeAppearances_inToggle_whenOneVisibleButton_withInsideCorner() {
170+
public void correctShapeAppearances_inToggle_whenOneVisibleButton_withInnerCorner() {
173171
MaterialButton firstChild = (MaterialButton) toggleGroup.getChildAt(0);
174172
MaterialButton middleChild = (MaterialButton) toggleGroup.getChildAt(1);
175173
MaterialButton lastChild = (MaterialButton) toggleGroup.getChildAt(2);
176174

177175
firstChild.setVisibility(GONE);
178176
middleChild.setVisibility(GONE);
179-
toggleGroup.setInsideCornerSizeInPx(5);
180-
toggleGroup.updateChildShapes();
177+
toggleGroup.setInnerCornerSize(new AbsoluteCornerSize(5));
181178
// Last child has default shape appearance.
182179
assertShapeAppearance(
183180
lastChild.getShapeAppearanceModel(), CORNER_SIZE, CORNER_SIZE, CORNER_SIZE, CORNER_SIZE);

0 commit comments

Comments
 (0)