В вашем ChipGroup
используйте атрибут app:singleSelection="true"
. Таким образом, ChipGroup
можно настроить так, чтобы можно было проверять только один чип одновременно.
<com.google.android.material.chip.ChipGroup
app:singleSelection="true"
..>
Затем вы можете установить цвет селектора, используя app:chipBackgroundColor
атрибут в вашем макете chip_item_layout.xml
.
Что-то вроде:
<com.google.android.material.chip.Chip
style="@style/Widget.MaterialComponents.Chip.Choice"
app:chipBackgroundColor="@color/chip_background_color"
..>
Обратите внимание на style="@style/Widget.MaterialComponents.Chip.Choice"
, поскольку он определяет чип как android:checkable="true".
chip_background_color
это селектор, в котором вы можете определить свои любимые цвета в разных состояниях. Это селектор по умолчанию, вы можете изменить его:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 24% opacity -->
<item android:alpha="0.24" android:color="?attr/colorPrimary" android:state_enabled="true" android:state_selected="true"/>
<item android:alpha="0.24" android:color="?attr/colorPrimary" android:state_enabled="true" android:state_checked="true"/>
<!-- 12% of 87% opacity -->
<item android:alpha="0.10" android:color="?attr/colorOnSurface" android:state_enabled="true"/>
<item android:alpha="0.12" android:color="?attr/colorOnSurface"/>
</selector>
Выбранный чип определяется по цвету, в вашем случае это первая строка (android:state_selected="true"
).
Если вы хотитенравится делать это программно, просто используйте ( не в OnCheckedChangeListener
) метод setChipBackgroundColorResource
.
chip.setChipBackgroundColorResource(R.color.chip_background_color);
![enter image description here](https://i.stack.imgur.com/RKd33.png)