Android MaterialButtonToggleGroup
在本教程中,我们将重点介绍Android Material Components新引入的MaterialButtonToggleGroup。
Android MaterialButtonToggleGroup
也称为ToggleButton,它用于托管具有可检查行为的按钮。
它类似于iOS中的SegmentedControl。
用户可以从组中选择一个或者多个选项。
为了使用Material Components,我们需要导入以下内容:
implementation 'com.google.android.material:material:1.0.0'
不要忘记在"活动"中设置" MaterialComponent"主题。
这是我们以XML定义MaterialButtonToggleGroup的方法:
<com.google.android.material.button.MaterialButtonToggleGroup android:id="@+id/toggleGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" app:checkedButton="@id/btnB" app:singleSelection="true" > <Button ... <Button android:id="@+id/btnB" ... </com.google.android.material.button.MaterialButtonToggleGroup>
app:singleSelection属性非常类似于RadioGroup。
通过Material Components,我们可以在UI上设置以下样式:
- 色彩
- 形状
- 版式
在下一节中,我们将使用各种形状,颜色和字体自定义MaterialButtonToggleGroup!让我们开始一个全新的Android Studio项目。
项目结构
Android Material Button切换小组项目
在下一节中,我们将介绍MaterialButtonToggleGroups的不同样式。
基本用法
<com.google.android.material.button.MaterialButtonToggleGroup android:id="@+id/toggleGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" app:checkedButton="@id/btnAndroid" app:singleSelection="true"> <Button android:id="@+id/btnAndroid" style="@style/Widget.MaterialComponents.Button.OutlinedButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Android" <Button android:id="@+id/btniOS" style="@style/Widget.MaterialComponents.Button.OutlinedButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="iOS" </com.google.android.material.button.MaterialButtonToggleGroup>
Android Material Toggle基本
MaterialButton中Button的推荐样式是Widget.MaterialComponents.Button.OutlinedButton
。
带图标和文字
要在按钮中使用图标,我们将使用MaterialButton:
<com.google.android.material.button.MaterialButtonToggleGroup android:id="@+id/toggleGroup2" android:layout_width="wrap_content" android:layout_height="wrap_content" app:checkedButton="@id/btnA" app:singleSelection="true"> <com.google.android.material.button.MaterialButton android:id="@+id/btnA" style="@style/Widget.MaterialComponents.Button.OutlinedButton.Icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Android" app:icon="@drawable/ic_android" <com.google.android.material.button.MaterialButton android:id="@+id/btnS" style="@style/Widget.MaterialComponents.Button.OutlinedButton.Icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sunny" app:icon="@drawable/ic_wb_sunny" </com.google.android.material.button.MaterialButtonToggleGroup>
Android Material Toggle图标文字
仅带有图标
如果只需要使用图标而不使用文本,则需要设置自定义样式。
否则,将会有另外的文本填充。
在styles.xml中添加以下内容:
<style name="IconOnlyButton" parent="Widget.MaterialComponents.Button.OutlinedButton"> <item name="iconPadding">0dp</item> <item name="iconGravity">textStart</item> </style>
"材质按钮切换组"图标的代码仅是:
<com.google.android.material.button.MaterialButtonToggleGroup android:id="@+id/toggleGroup3" android:layout_width="wrap_content" android:layout_height="wrap_content" app:singleSelection="false"> <com.google.android.material.button.MaterialButton style="@style/IconOnlyButton" android:layout_width="wrap_content" android:layout_height="wrap_content" app:icon="@drawable/ic_signal_wifi_off" app:iconTint="@android:color/holo_red_light" <com.google.android.material.button.MaterialButton style="@style/IconOnlyButton" android:layout_width="wrap_content" android:layout_height="wrap_content" app:icon="@drawable/ic_signal_wifi_3_bar_lock" <com.google.android.material.button.MaterialButton style="@style/IconOnlyButton" android:layout_width="wrap_content" android:layout_height="wrap_content" app:icon="@drawable/ic_wifi" </com.google.android.material.button.MaterialButtonToggleGroup>
仅适用于Android Material Toggle图标
在上面的代码中,我们还添加了" iconTint"和多项选择。
设定形状
要设置自定义形状,我们需要以自定义样式设置cornerFamily
属性,如下所示:
<style name="Cut" parent="ShapeAppearance.MaterialComponents.MediumComponent"> <item name="cornerFamily">cut</item> <item name="cornerSize">12dp</item> </style>
然后在MaterialButton的shapeAppearance属性中设置以上样式:
<com.google.android.material.button.MaterialButtonToggleGroup android:id="@+id/toggleGroup4" android:layout_width="wrap_content" android:layout_height="wrap_content" app:singleSelection="false"> <com.google.android.material.button.MaterialButton style="@style/IconOnlyButton" android:layout_width="wrap_content" android:layout_height="wrap_content" app:icon="@drawable/ic_signal_wifi_off" app:strokeWidth="2dp" app:shapeAppearance="@style/Cut" <com.google.android.material.button.MaterialButton style="@style/IconOnlyButton" android:layout_width="wrap_content" android:layout_height="wrap_content" app:strokeWidth="2dp" app:icon="@drawable/ic_signal_wifi_3_bar_lock" <com.google.android.material.button.MaterialButton style="@style/IconOnlyButton" android:layout_width="wrap_content" android:layout_height="wrap_content" app:icon="@drawable/ic_wifi" app:strokeWidth="2dp" app:shapeAppearance="@style/Cut" </com.google.android.material.button.MaterialButtonToggleGroup>
在上面的代码中,我们还在轮廓按钮上设置了" strokeWidth"。
Android材质切换按钮形状切割
圆角形状
我们可以设置自定义的圆角形状,其圆角半径如下所示:
<style name="Rounded" parent="ShapeAppearance.MaterialComponents.SmallComponent"> <item name="cornerFamily">rounded</item> <item name="cornerSize">16dp</item> </style>
<com.google.android.material.button.MaterialButtonToggleGroup android:id="@+id/toggleGroup5" android:layout_width="wrap_content" android:layout_height="wrap_content" app:singleSelection="false"> <com.google.android.material.button.MaterialButton style="@style/IconOnlyButton" android:layout_width="wrap_content" android:layout_height="wrap_content" app:icon="@drawable/ic_signal_wifi_off" app:shapeAppearance="@style/Rounded" app:strokeColor="@android:color/black" app:strokeWidth="4dp" <com.google.android.material.button.MaterialButton style="@style/IconOnlyButton" android:layout_width="wrap_content" android:layout_height="wrap_content" app:icon="@drawable/ic_signal_wifi_3_bar_lock" app:strokeColor="@android:color/black" app:strokeWidth="4dp" <com.google.android.material.button.MaterialButton style="@style/IconOnlyButton" android:layout_width="wrap_content" android:layout_height="wrap_content" app:icon="@drawable/ic_wifi" app:shapeAppearance="@style/Rounded" app:strokeColor="@android:color/black" app:strokeWidth="4dp" </com.google.android.material.button.MaterialButtonToggleGroup>
Android材质切换按钮形状四舍五入
与版式
以下样式在MaterialButtons的文本上添加了字体系列:
<style name="CustomFont" parent="TextAppearance.MaterialComponents.Headline4"> <item name="fontFamily">@font/amatic</item> <item name="android:textAllCaps">false</item> </style>
<com.google.android.material.button.MaterialButtonToggleGroup android:id="@+id/toggleGroup6" android:layout_width="wrap_content" android:layout_height="wrap_content" app:singleSelection="false"> <com.google.android.material.button.MaterialButton style="@style/Widget.MaterialComponents.Button.OutlinedButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Java" android:textAppearance="@style/CustomFont" app:strokeColor="@android:color/black" <com.google.android.material.button.MaterialButton style="@style/Widget.MaterialComponents.Button.OutlinedButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Python" android:textAppearance="@style/CustomFont" app:strokeColor="@android:color/black" <com.google.android.material.button.MaterialButton style="@style/Widget.MaterialComponents.Button.OutlinedButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="C++" android:textAppearance="@style/CustomFont" app:strokeColor="@android:color/black" </com.google.android.material.button.MaterialButtonToggleGroup>
我们已经在res下的font
文件夹中添加了自定义字体文件。
MaterialButtonToggleGroup具有一个addOnButtonCheckedListener
回调,该回调在选中按钮时触发。