android.content.res.Resources$NotFoundException:找不到资源文件res/drawable/$my_app_img__0.xml,这是一个颜色状态列表资源ID #0x7f07000a。

7

我有一个带有 app:srcCompat="@drawable/my_app_img"ImageView

我在 Android 6 上遇到了如下错误:

android.content.res.Resources$NotFoundException File res/drawable/$my_app_img__0.xml from color state list resource ID #0x7f07000a

但是在 Android 8 及以上版本中没有出现此问题。

这是我的 my_app_img.xml 文件:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:aapt="http://schemas.android.com/aapt"
    xmlns:tools="http://schemas.android.com/tools"
    android:width="73dp"
    android:height="103dp"
    android:viewportWidth="73"
    android:viewportHeight="103">
    <path
        android:fillAlpha="0"
        android:fillColor="#000000"
        android:pathData="M0,0l72.299,0l0,103l-72.299,0z" />
    <path android:pathData="M70.379,96.761L40.602,56.464L25.724,77.276C22.268,82.111 22.324,88.62 25.864,93.394L28.417,96.839C31.291,100.714 35.832,103 40.659,103H67.227C70.442,103 72.288,99.345 70.379,96.761Z">
        <aapt:attr name="android:fillColor">
            <gradient
                android:endColor="#FF094EC2"
                android:endX="31.7222"
                android:endY="68.3161"
                android:startColor="#FF005AF4"
                android:startX="57.4428"
                android:startY="104.487"
                android:type="linear"
                tools:targetApi="n" />
        </aapt:attr>
    </path>
    <path android:pathData="M68.592,0H38.75C36.254,0 33.907,1.188 32.431,3.199L2.949,43.369C-0.919,48.64 -0.988,55.79 2.778,61.134L19.001,84.156C19.001,80.833 20.044,77.594 21.984,74.895L71.598,5.853C73.355,3.407 71.606,0 68.592,0Z">
        <aapt:attr name="android:fillColor">
            <gradient
                android:endColor="#FF29EEFD"
                android:endX="32.6558"
                android:endY="31.6712"
                android:startColor="#FF2EB3ED"
                android:startX="6.53102"
                android:startY="64.8591"
                android:type="linear" />
        </aapt:attr>
    </path>
</vector>

我也使用:

vectorDrawables.useSupportLibrary = true
3个回答

16

我认为问题与矢量图中存在的渐变有关。您在那里使用了 <aapt:attr name="android:fillColor"> 参数设置渐变,通过查看文档,似乎只支持从SDK 24+开始的渐变。

Android 矢量图

android:fillColor

指定用于填充路径的颜色。 可以是颜色,也可以是SDK 24+中的颜色状态列表或渐变颜色

您可以尝试不使用渐变来查看它是否有效。


我在API <= 23上使用level-list中的向量时出现了崩溃。 drawableEndCompatlevel-list一起使用会崩溃,但如果直接使用矢量图,则不会发生崩溃。 无论如何,drawableEnd都会崩溃。 我用纯色替换了渐变的填充和描边,从而解决了崩溃问题,即使是drawableEnd也能正常工作。 我其实并不需要这些渐变。 花了几个小时才找到这个解决方案,而大多数答案都指向了支持库代码,我要么已经在使用它们,要么没有帮助。谢谢! - Pilot_51

1

我之前使用的是ImageView,现在已经替换成了AppCompatImageView,并且修复了兼容性问题,现在可以支持24及以下版本。


0

我正在遇到同样的问题。 我发现原因似乎是android grade插件版本的问题。

您的矢量图仅支持API 24或更高版本。 在3.2.x或更低版本中,我将其从设备更改为PNG文件,在API 24下运行良好。 但是,在3.3.x中会在那一部分崩溃。

您是否正在使用3.3.x

如果是这样,您可以使用3.2.x或更低版本或使用AndroidX来解决该问题。

或者,您可以仅在API版本24或更高版本中使用矢量图,或在较低版本中使用PNG文件。

我还没有找到更好的方法。

希望这可以帮助您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接