如何在Anko垂直布局中设置按钮颜色?按钮样式修改无效
解决Anko按钮背景色与文字颜色不生效的问题
嘿,我懂你遇到的这个坑!你直接用R.color.colorPrimary和android.R.color.white给按钮设置颜色是行不通的——因为Anko的backgroundColor和textColor属性需要的是实际的颜色数值(ColorInt),而R.color.xxx返回的只是一个资源ID,不是颜色本身的ARGB值。
咱们来修改你的按钮代码,把资源ID转换成正确的颜色值就行:
适配Android 6.0+的写法
var button = button { backgroundColor = context.getColor(R.color.colorPrimary) text = "SignIn" textColor = context.getColor(android.R.color.white) }
兼容低版本(Android 5.1及以下)的写法
如果你的项目需要兼容更早的系统,记得先导入androidx.core.content.ContextCompat,然后用:
import androidx.core.content.ContextCompat // ... var button = button { backgroundColor = ContextCompat.getColor(context, R.color.colorPrimary) text = "SignIn" textColor = ContextCompat.getColor(context, android.R.color.white) }
简单说下原因:R.color.colorPrimary本质是一个int类型的资源标识(比如类似2131099648这样的数字),按钮控件没法把这个数字当成颜色来解析,所以必须通过getColor()方法从资源中取出真正的颜色数值,这样设置后按钮的样式才会生效~
内容的提问来源于stack exchange,提问作者Raja Jawahar
相关产品推荐
相关产品推荐

