кнопка переключения одного материала с изображением

#android #material-design #android-button #material-components-android

#Android #материал-дизайн #android-кнопка #материал-компоненты-android

Вопрос:

Я использую библиотеку дизайна материалов Google в своем приложении и очень удивлен, что у нее нет кнопки переключения. Существует группа кнопок переключения, но что мне делать, если мне нужна одна кнопка для включения и выключения. Мой вариант использования — показывать одно изображение, когда включено, а другое — когда выключено. Я пытался сделать это с помощью переключателей, но мне пришлось много сложных настроек. Могу ли я каким-либо образом использовать простую кнопку материала в качестве кнопки переключения?

Ответ №1:

Вы можете использовать что-то вроде:

 <com.google.android.material.button.MaterialButton
    android:id="@ id/toogleButtton"
    style="@style/ToggleButton"
    android:checkable="true"
    android:layout_width="48dp"
    android:layout_height="48dp"
    app:icon="@drawable/ic_add_24px"/>
  

и

    toogleButtton.setIcon(createHeaderToggleDrawable(this))
   toogleButtton.isChecked = true

    // Create StateListDrawable programmatically
    private fun createHeaderToggleDrawable(context: Context): Drawable {
        val toggleDrawable = StateListDrawable()
        toggleDrawable.addState(
            intArrayOf(android.R.attr.state_checked),
            AppCompatResources.getDrawable(context, R.drawable.xxx)
        )
        toggleDrawable.addState(
            intArrayOf(),
            AppCompatResources.getDrawable(context, R.drawable.xxxx)
        )
        return toggleDrawable
    }
  

Настройте свой цвет в стиле:

 <style name="ToggleButton" parent="Widget.MaterialComponents.Button.TextButton">
    <item name="iconTint">?attr/colorPrimary</item>
    <item name="android:insetTop">0dp</item>
    <item name="android:insetBottom">0dp</item>
    <item name="android:padding">12dp</item>
    <item name="rippleColor">@color/mtrl_btn_ripple_color</item>
</style>
  

введите описание изображения здесь