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

调用ContextCompat.getColorStateList报Expected resource of type color错误排查

「Expected resource of type color」高亮错误原因解析

重现场景

颜色选择器XML文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_checked="true"
        android:color="@color/white" />
    <item
        android:state_checked="false"
        android:color="#80FFFFFF" />
</selector>

调用代码:

ContextCompat.getColorStateList(context, R.drawable.bottom_navigation_colors_white)

错误原因

  • 资源存放目录不符合规范:ColorStateList类型的XML属于颜色资源范畴,必须放在res/color/目录下,你当前将其放在res/drawable/目录,导致资源被识别为drawable类型而非color类型。
  • Lint静态校验触发提示:ContextCompat.getColorStateList()方法的第二个参数要求传入R.color.xxx类型的资源ID,Android Studio的Lint工具会做静态类型匹配检查,当传入R.drawable.xxx时就会抛出类型不匹配的高亮提示。不过Android系统在运行时能正确解析该XML的ColorStateList结构,所以不会影响编译和运行。

解决方法

  1. 将该颜色选择器XML文件从res/drawable/目录移动到res/color/目录下
  2. 修改调用代码,使用R.color前缀的资源ID:
ContextCompat.getColorStateList(context, R.color.bottom_navigation_colors_white)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:46:06