如何防止芯片被取消选中?

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

【讨论】:

以上是关于如何防止芯片被取消选中?的主要内容,如果未能解决你的问题,请参考以下文章

防止复选框在单击时取消选中(不禁用或只读)

如何使用 jQuery 使用按钮选中/取消选中所有复选框?

如何防止旧版访问代码中的“OpenForm 操作被取消”

取消选中带有 Material UI 的单选按钮

jquery-ui-sortable,当列表被隐藏时如何防止取消?

如何取消选中或重置单选按钮?