以编程方式更改MaterialButton图标的图标色调[Kotlin]

时间:2019-04-11 23:54:20

标签: android kotlin android-vectordrawable

我需要更改我的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 个答案:

答案 0 :(得分:1)

您将要使用MaterialButton的setIconTint(ColorStateList)setIconTint(Int)方法。例如:

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

答案 1 :(得分:1)

您需要以编程方式将ColorStateList传递给iconTint。

btnShowDepartmentList.iconTint = ContextCompat.getColorStateList(activity, R.color.orangeLighter)

答案 2 :(得分:0)

这对我有用:

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

我的错误尝试通过以下方式设置图标色调:

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