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

添加app:shadowColor属性后应用崩溃,Logcat报颜色转换错误

嘿,我之前也碰到过这个一模一样的错误!让我帮你捋捋问题出在哪以及怎么解决:

错误原因解析

这个Can't convert value at index 1 to color: type=0x5报错,本质是系统尝试解析shadowColor的颜色值时失败了。这里的type=0x5对应安卓源码里的TYPE_ATTRIBUTE——简单说就是你引用的颜色资源/属性,系统没办法转换成它需要的颜色格式。常见的触发场景有这几种:

  • 在不支持app:shadowColor属性的控件上强行使用了这个属性
  • 颜色引用的格式不符合当前场景的要求
  • 误用了主题属性(用?开头)而非具体颜色资源(用@开头)
针对性解决办法

1. 检查控件是否支持app:shadowColor

比如Material Components库的MaterialTextView支持app:shadowColor,但原生TextView在API 28及以下版本是用android:shadowColor这个系统属性的。如果是原生控件,把属性改成:

android:shadowColor="@android:color/black"

2. 替换为十六进制颜色值

如果是资源引用解析失败,直接用具体的十六进制颜色值代替资源引用也能解决问题,效果是一样的:

app:shadowColor="#000000" <!-- 和@android:color/black完全等价 -->

3. 自定义View场景的特殊处理

如果你是在自定义View里使用这个属性,要确保在attrs.xml里正确声明属性的格式:

<declare-styleable name="YourCustomView">
    <attr name="shadowColor" format="color|reference" />
</declare-styleable>

然后在代码里获取颜色时,用ContextCompat.getColor()来安全解析,避免类型转换错误:

int shadowColor = ContextCompat.getColor(context, 
    attrs.getAttributeResourceValue(R.styleable.YourCustomView_shadowColor, 
    android.R.color.black));

4. 检查是否误用了主题属性

确认你的颜色引用是@android:color/black而不是?android:color/black。后者是引用主题中的动态属性,如果当前主题没有对应的映射,就会触发解析失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:27:18