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

如何在RecyclerView中正确调用getColor获取colors.xml颜色资源

从colors.xml获取颜色资源的正确实现方法
  • setBackgroundColor() 要求传入解析后的ARGB色值整数,直接传入R.color.magenta这类资源ID会触发报错,这是问题的核心原因。
  • 旧的resources.getColor() 方法在API 23及以上版本已废弃,未传入主题参数时会出现适配异常,不推荐使用。

推荐兼容写法(适配全API版本)

直接使用ContextCompat完成颜色解析,不需要手动处理系统版本判断:

override fun onBindViewHolder(holder: NavlogViewHolder, position: Int) {
    // 直接从holder的itemView获取上下文,无需额外给Adapter传Context实例
    val magentaColor = ContextCompat.getColor(holder.itemView.context, R.color.magenta)
    holder.myTextView.setBackgroundColor(magentaColor)
}

可选写法(仅API 23+适用)

如果你的项目最小支持API 23,可以直接调用带主题参数的原生方法:

override fun onBindViewHolder(holder: NavlogViewHolder, position: Int) {
    val magentaColor = holder.itemView.context.resources.getColor(R.color.magenta, holder.itemView.context.theme)
    holder.myTextView.setBackgroundColor(magentaColor)
}

注意:需确保res/values/colors.xml中已经正确定义对应名称的色值,示例如下:

<color name="magenta">#FFFF00FF</color>

内容的提问来源于stack exchange,提问作者Artyum

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:54:01