我这边做因为数据是动态获取的,本来想用recyclerview来做,突然想起来某个版本加了这东西。看演示,别人的是这样的,

aaq7i-muy3j.gif
我做完是这样,注意这不是全选中,而是全没选中的样子。。
21.png
22.png

然后查了下官网,发现要对MaterialButtonToggleGroup内部的MaterialButton加上style="?attr/materialButtonOutlinedStyle"的样式。
因为我是动态添加的,所以没有在xml写了,代码是这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
btnToggleGroup.addView(createBtnToggle( "-"))

private fun createBtnToggle(content: String): Button {
val btn = MaterialButton(
requireContext(),
null,
R.attr.materialButtonOutlinedStyle
)
val layoutParam = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
btn.layoutParams = layoutParam
btn.setPadding(16f.dp.toInt(), 8f.dp.toInt(), 16f.dp.toInt(), 8f.dp.toInt())
btn.text = content
btn.textSize = 20f.sp
return btn
}

如果在xml里用,那直接官网上这样就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<com.google.android.material.button.MaterialButtonToggleGroup
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toggle_button_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<com.google.android.material.button.MaterialButton
style="?attr/materialButtonOutlinedStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_label_private"/>
<com.google.android.material.button.MaterialButton
style="?attr/materialButtonOutlinedStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_label_team"/>
<com.google.android.material.button.MaterialButton
style="?attr/materialButtonOutlinedStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_label_everyone"/>
<com.google.android.material.button.MaterialButton
style="?attr/materialButtonOutlinedStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_label_custom"/>

</com.google.android.material.button.MaterialButtonToggleGroup>