You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:17:33