Y a-t-il une option pour rendre le MaterialButtonToggleGroup
avoir un bouton sélectionné requis lors de l'utilisation app:singleSelection="true"
?
Lorsque vous cliquez sur un bouton différent fonctionne bien (tous les autres boutons sont désélectionnés), mais lorsque vous cliquez sur le bouton identique (déjà sélectionné), il le désélectionne lui-même et je tiens à rester sélectionné.
Mon exemple:
<com.google.Android.material.button.MaterialButtonToggleGroup
Android:layout_width="wrap"
Android:layout_height="wrap_content"
app:singleSelection="true">
<com.google.Android.material.button.MaterialButton
Android:id="@+id/filterA"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="A"/>
<com.google.Android.material.button.MaterialButton
Android:id="@+id/filterB"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="B"/>
<com.google.Android.material.button.MaterialButton
Android:id="@+id/filterC"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="C"/>
</com.google.Android.material.button.MaterialButtonToggleGroup>
J'ai eu cela fonctionnant avec ce qui suit:
toggle_group.addOnButtonCheckedListener { group, checkedId, isChecked ->
if (group.checkedButtonId == -1) group.check(checkedId)
}
Si vous avez activé le singolleLection, le conditionnel n'évaluera que pour être true lorsque l'utilisateur a cliqué sur le bouton déjà vérifié, ce qui le rend donc sans but. Lorsque cela se produit, nous devons juste vérifier le bouton qu'ils sont décochés.
J'ai également rencontré ce problème et j'ai trouvé que cela fonctionne avec le app:singleSelection="true"
String selectedValue = "Male";
genderBtnToggle.addOnButtonCheckedListener(new MaterialButtonToggleGroup.OnButtonCheckedListener() {
@Override
public void onButtonChecked(MaterialButtonToggleGroup group, int checkedId, boolean isChecked) {
MaterialButton btn = genderBtnToggle.findViewById(checkedId);
if (!isChecked && btn.getText().toString().equals(selectedValue)) {
genderBtnToggle.check(checkedId);
}
if (isChecked) {
selectedValue = btn.getText().toString();
}
}
});