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

Kotlin Fragment中如何获取主题的主文本颜色?

正确获取主题主文本颜色的方法

你遇到的错误是因为android.R.attr.textColorPrimary是属性ID,而非直接的颜色资源ID,ContextCompat.getColor()无法直接解析属性,必须先通过主题解析出对应的颜色资源ID,再获取颜色值。

以下是两种可行的实现方式:

方法一:通过TypedValue解析属性

val typedValue = TypedValue()
requireActivity().theme.resolveAttribute(android.R.attr.textColorPrimary, typedValue, true)
val textColorPrimary = ContextCompat.getColor(requireActivity(), typedValue.resourceId)

方法二:通过StyledAttributes批量解析属性

如果需要同时获取多个主题属性,推荐用这种方式:

// 定义需要解析的属性数组
val attrs = intArrayOf(android.R.attr.textColorPrimary)
val typedArray = requireActivity().obtainStyledAttributes(attrs)
// 第一个参数是属性在数组中的索引,第二个是默认颜色(当属性解析失败时使用)
val textColorPrimary = typedArray.getColor(0, android.graphics.Color.BLACK)
// 必须回收TypedArray,避免内存泄漏
typedArray.recycle()

解析完成后,你就可以将textColorPrimary设置给饼图的文本颜色了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:55:25