Как сделать так, чтобы тумблер материала в Android вел себя как Switch? - PullRequest
0 голосов
/ 11 ноября 2019

Я использую следующую библиотеку проектирования материалов

implementation "com.google.android.material:material:1.2.0-alpha01"

И вот как я реализую свою кнопку переключения материалов

<com.google.android.material.button.MaterialButtonToggleGroup
    id="@+id/toggleBtnGroup"
    app:singleSelection="true"
    android:id="@+id/toggle_button_group"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:checkedButton="@+id/leftAlign">

    <com.google.android.material.button.MaterialButton
        id="@+id/leftAlign"
        style="?attr/materialButtonOutlinedStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Left"/>
    <com.google.android.material.button.MaterialButton
        id="@+id/centerAlign"
        style="?attr/materialButtonOutlinedStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Center"/>
    <com.google.android.material.button.MaterialButton
        id="@+id/rightAlign"
        style="?attr/materialButtonOutlinedStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Right"/>

</com.google.android.material.button.MaterialButtonToggleGroup>

Теперь, когда явыберите другие кнопки, одновременно выбирается только 1 кнопка, как я могу быть уверен, что если пользователь снова выберет выбранную кнопку, она не будет отменена. По сути, я хочу, чтобы хотя бы одна из этих кнопок была выбрана в определенное время. Material Button Toggle

Как можно это сделать?

1 Ответ

0 голосов
/ 11 ноября 2019

Чтобы реализовать это, сделайте что-то вроде этого: -

//We are adding a button checked listener to the toggle group
toggleBtnGroup.addOnButtonCheckedListener { group, checkedId, isChecked ->
    if (isChecked){
        //Do something
    } else {
        //Something is unchecked, we need to make sure that all the buttons are not un-selected
        if(-1 == group.checkedButtonId){
            //All buttons are unselected
            //So now we will select the button which was unselected right now
            group.check(checkedId)
        }
    }
}

В основном мы проверяем, является ли isChecked ложным, затем проверяем, все ли кнопки не выбраны, и если да, то мы выберем кнопку,который был недавно не выбран.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...