Измените цветовой оттенок значка MaterialButton программно [Kotlin] - PullRequest
0 голосов
/ 12 апреля 2019

Мне нужно изменить оттенок значка моего MaterialButton, значок представляет собой векторный актив xml, и я могу легко изменить оттенок в макете xml, но мне нужно программно изменить цвет одним щелчком, я не могу быть в состоянии найти что-то связанное с этой проблемой, это моя кнопка:

<com.google.android.material.button.MaterialButton
                android:id="@+id/btnShowDepartmentList"
                style="@style/com.madison.Button.IconButton"
                app:iconSize="32dp"
                android:padding="0dp"
                android:paddingLeft="5dp"
                android:paddingStart="5dp"
                app:icon="@drawable/ic_list_thumbnails"
                android:layout_width="42dp"
                android:layout_height="42dp"
                app:iconTint="@color/orangeLighter"
                tools:ignore="RtlSymmetry"/> ```

Ответы [ 3 ]

1 голос
/ 12 апреля 2019

Вам необходимо передать ColorStateList в iconTint программно.

btnShowDepartmentList.iconTint = ContextCompat.getColorStateList(activity, R.color.orangeLighter)
1 голос
/ 12 апреля 2019

Это работает для меня:

btnShowDepartmentThumbnails.setOnClickListener {
        btnShowDepartmentThumbnails.setIconTintResource(R.color.orangeLighter)            
    }

Моя ошибка пыталась установить оттенок значка следующим образом:

 btnShowDepartmentThumbnails.setOnClickListener {
            it.setIconTintResource(R.color.orangeLighter)            
        }
1 голос
/ 12 апреля 2019

Вы захотите использовать setIconTint(ColorStateList) или setIconTint(Int) методы MaterialButton.Например:

val button = findViewById<MaterialButton>(R.id.btnShowDepartmentList)
button.setOnClickListener {
    button.setIconTint(R.color.orangeLighter)
}
...