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