我想用kotlin在android中单击Button后更改背景

时间:2017-08-26 08:18:40

标签: android button background kotlin

我想在点击按钮

后更改背景
   var bm : Button = messeg
    bm . setOnClickListener {
        bm . background = R.color.green
    }

错误日志:

  

错误:(35,31)类型不匹配:推断类型是Int但是Drawable!是   预期错误:任务':app:compileDebugKotlin'执行失败。

     
    

编译错误。有关更多详细信息,请参阅日志

  

2 个答案:

答案 0 :(得分:8)

background需要Drawable,但您传递的是颜色资源。

  1. 您可以使用setBackgroundColor设置颜色资源:
  2. bm.setBackgroundColor(R.color.green)

    1. setBackgroundResource可用于设置可绘制资源:
    2. bm.setBackgroundResource(R.drawable.green_resource)

      1. background属性可用于设置drawable:
      2. 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)