5.0上的getDrawable NotFoundException

时间:2018-02-23 13:29:22

标签: android vector resources drawable

加载矢量drawable,这个

ContextCompat.getDrawable(context, R.drawable.figure_bp);

在5.0之前的设备上正常工作。在较新的API上,它崩溃并出现错误

Resources$NotFoundException: File res/drawable/figure_wp.xml from drawable resource ID #0x7f070079

我尝试过其他版本25.3.1,26 ......

不同的方法:

VectorDrawableCompat.create(context.getResources(), R.drawable.figure_wp, null);
context.getResources().getDrawable(R.drawable.figure_wp, null);
AppCompatResources.getDrawable(context, R.drawable.figure_wp);
...

还有vectorDrawables.useSupportLibrary = true

总是同样的问题。有时它会先检查anydpi

我见过大多数相关问题,没有运气

2 个答案:

答案 0 :(得分:1)

浪费了3个小时后,我已经弄明白了。 显然是api> 19&& api< 24不能有渐变标签。 虽然它应该忽略它们,但它却因为无关的错误而崩溃了。

更换

    <aapt:attr name="android:fillColor">
        <gradient android:endX="13760.793757781983"
            android:endY="6638.382661392212"
            android:startX="3736.5152613830564"
            android:startY="6573.006932067871" android:type="linear">
            <item android:color="#FFFFFFFF" android:offset="0.0"/>
            <item android:color="#00FFFFFF" android:offset="1.0"/>
        </gradient>
    </aapt:attr>

android:fillColor = "#FFFFFFFF"

修复了问题。不得不在我使用的所有矢量上手动完成,因为它是android studio的SVG解析器,它为我解析了原始的svg。

感谢ResourcesNotFoundException when resource available (API 22 and 23 devices) 指导我进入解决方案!

答案 1 :(得分:0)

尝试在gradle中添加vectorDrawables.useSupportLibrary = true

  defaultConfig {
        applicationId "...."
        minSdkVersion ..
        targetSdkVersion ..
        versionCode 1
        versionName "1.0"
      vectorDrawables.useSupportLibrary = true
    }