Material Button Toggle Group single selection

前端 未结 4 1986
抹茶落季
抹茶落季 2021-02-19 04:55

How can I force a MaterialButtonToggleGroup to act like a RadioGroup as in having at least one selected item always? Setting setSingleSelection(true)

4条回答
  •  北荒
    北荒 (楼主)
    2021-02-19 05:24

    Override the toggle() method of the MaterialButton class and use it instead of MaterialButton

    import android.content.Context
    import android.util.AttributeSet
    import com.google.android.material.button.MaterialButton
    
    class CustomMaterialToggleButton : MaterialButton {
    
        constructor(context: Context) : super(context)
    
        constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
    
        constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
    
        override fun toggle() {
            if (!isChecked) {
                super.toggle()
            }
        }
    }
    

    This will make sure that already checked button is not unchecked on single selection.

    UPDATE :

    app:selectionRequired="true" attribute is available as of version 1.2.0

提交回复
热议问题