Android Material Button Toggle Group - 选中无选择

Lau*_*ura 3 android android-button android-togglebutton material-components material-components-android

我使用的MaterialButtonToggleGroup是单选(一次只选中一个按钮)。如何检查是否没有选中任何按钮?

        toggleGroup?.addOnButtonCheckedListener { group, checkedId, isChecked ->
        if (isChecked) {
            when (checkedId) {
                R.id.first_materialButton -> {
                    // do something when selected
                }

                R.id.second_materialButton -> {
                    // do something when selected
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Gab*_*tti 6

如果您需要听众,请检查@Laura 的答案

否则你可以使用以下getCheckedButtonIds()方法:

List<Integer> ids = materialButtonToggleGroup.getCheckedButtonIds();
if (ids.size() == 0){
  //Case unckecked
}
Run Code Online (Sandbox Code Playgroud)

如果您想要求单个选择,可以使用该app:singleSelection="true"属性:

<com.google.android.material.button.MaterialButtonToggleGroup
    app:selectionRequired="true"
    app:singleSelection="true"
    ..>
Run Code Online (Sandbox Code Playgroud)

此属性需要最低版本1.2.0-alpha03


Lau*_*ura 5

解决方案是checkedButtonId从 else 分支上的组中获取isChecked,如果值为 -1,则不选择任何按钮。

toggleGroup?.addOnButtonCheckedListener { group, checkedId, isChecked ->
    if (isChecked) {
        when (checkedId) {
            R.id.first_materialButton -> {
                // do something when selected
            }

            R.id.second_materialButton -> {
                // do something when selected
            }
        }
    } else {
        if (group.checkedButtonId == View.NO_ID) {
           // do something when nothing selected
        }
    }
}
Run Code Online (Sandbox Code Playgroud)