我想改变背景后,点击按钮在Android与Kotlin

cld4siwp  于 2023-03-11  发布在  Android
关注(0)|答案(3)|浏览(167)

我想在单击按钮后更改背景

var bm : Button = messeg
    bm . setOnClickListener {
        bm . background = R.color.green
    }

错误日志:
错误:(35,31)类型不匹配:推断类型为Int,但应为Drawable!错误:任务“:app:compileDebugKotlin”执行失败。
编译错误。有关详细信息,请参阅日志

u5i3ibmn

u5i3ibmn1#

background需要一个Drawable,但您传递的是一个颜色资源。
1.可以使用setBackgroundColor设置颜色资源:
bm.setBackgroundColor(R.color.green)

  1. setBackgroundResource可用于设置可绘制资源:
    bm.setBackgroundResource(R.drawable.green_resource)
  2. background属性可用于设置可绘制:
    bm.background = ContextCompat.getDrawable(context, R.drawable.green_resource)
oxf4rvwz

oxf4rvwz2#

setBackgroundColor()当前接受的答案是错误的。在给定的示例中,您将颜色设置为资源ID,但必须直接传递颜色。
这不会失败,因为两个值都是int,但是你会得到奇怪的颜色。
相反,您应该先从资源中检索颜色,然后将其设置为背景。例如:

val colorValue = ContextCompat.getColor(context, R.color.green)
bm.setBackgroundColor(colorValue)
brtdzjyr

brtdzjyr3#

按钮.设置背景资源(R.可绘制.形状按钮)

相关问题