如何防止芯片被取消选中?
Posted
技术标签:
【中文标题】如何防止芯片被取消选中?【英文标题】:How to prevent uncheck of Chip? 【发布时间】:2021-12-20 15:58:22 【问题描述】:我正在使用 Chip 来检查和取消选中按钮。我有多个选择,用户只能检查其中一个。问题是当我单击选中按钮时,它会被取消选中,但这不是我所期望的。我希望无论如何都要检查我的按钮,并且只有在您检查另一个按钮时才应该取消选中。我正在使用自定义样式:
<style name="Widget.MaterialComponents.Chip.Choice" parent="Base.Widget.MaterialComponents.Chip">
<item name="android:checkable">true</item>
<item name="chipIconVisible">false</item>
<item name="closeIconVisible">false</item>
<item name="chipCornerRadius">5dp</item>
<item name="ensureMinTouchTargetSize">false</item>
<item name="chipStrokeWidth">2dp</item>
<item name="chipStrokeColor">@color/chip_state_selector</item>
<item name="checkedIconVisible">false</item>
</style>
以及它的自定义边框:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:color="@color/black"
android:state_selected="true"
android:state_checked="true"/>
<item
android:color="@color/black"
android:state_selected="true"/>
<item
android:state_selected="false"
android:color="@color/white"/>
</selector>
我的期望:3 个按钮。首先检查为默认值。如果我再次按下此按钮,它不会被取消选中,因为它是这里唯一一个选中的按钮。当我按下另一个按钮时,这个按钮会被取消选中,当然新按钮也会被选中。
【问题讨论】:
【参考方案1】:Soultion 是:在 ChipGroup 的 XML 中设置 chipGroup.setSelectionRequired(true)
或 app:selectionRequired="true"
ChipGroup single selection
【讨论】:
以上是关于如何防止芯片被取消选中?的主要内容,如果未能解决你的问题,请参考以下文章