我想在点击按钮
后更改背景 var bm : Button = messeg
bm . setOnClickListener {
bm . background = R.color.green
}
错误日志:
错误:(35,31)类型不匹配:推断类型是Int但是Drawable!是 预期错误:任务':app:compileDebugKotlin'执行失败。
编译错误。有关更多详细信息,请参阅日志
答案 0 :(得分:8)
background
需要Drawable
,但您传递的是颜色资源。
setBackgroundColor
设置颜色资源: bm.setBackgroundColor(R.color.green)
setBackgroundResource
可用于设置可绘制资源: bm.setBackgroundResource(R.drawable.green_resource)
background
属性可用于设置drawable: bm.background = ContextCompat.getDrawable(context, R.drawable.green_resource)
答案 1 :(得分:5)
对于setBackgroundColor(),当前接受的答案是错误的。在给定的示例中,您将颜色设置为资源ID,但是必须直接传递颜色。
这不会失败,因为两个值都是int,但是您会得到奇怪的颜色。
相反,您应该首先从资源中检索颜色,然后将其设置为背景。示例:
val colorValue = ContextCompat.getColor(context, R.color.green)
bm.setBackgroundColor(colorValue)