Для достижения этой цели есть два шага
Шаг 1
У нас есть встроенная поддержка, просто добавьте app:singleSelection="true"
к вашему ChipGroup
, например:
XML
<com.google.android.material.chip.ChipGroup
android:id="@+id/group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:singleSelection="true">
<com.google.android.material.chip.Chip
android:id="@+id/option_1"
style="@style/Widget.MaterialComponents.Chip.Choice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Option 1" />
<com.google.android.material.chip.Chip
android:id="@+id/option_2"
style="@style/Widget.MaterialComponents.Chip.Choice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Option 2" />
</com.google.android.material.chip.ChipGroup>
Код
// Kotlin
group.isSingleSelection = true
// Java
group.setSingleSelection(true);
Шаг 2
Теперь для поддержки группы радиосвязи, например:
var lastCheckedId = View.NO_ID
chipGroup.setOnCheckedChangeListener { group, checkedId ->
if(checkedId == View.NO_ID) {
// User tried to uncheck, make sure to keep the chip checked
group.check(lastCheckedId)
return@setOnCheckedChangeListener
}
lastCheckedId = checkedId
// New selection happened, do your logic here.
(...)
}
Из документов :
ChipGroup также поддерживает область множественного исключения для набора микросхем.
Когда вы устанавливаете атрибут app: singleSelection, проверяете один чип, который
принадлежит к группе чипов, снимает флажок с любого ранее проверенного чипа в
та же группа. Поведение отражает поведение RadioGroup.