在运行时,空的矢量可绘制对象会导致资源未找到异常。

5

我无法使用空的矢量图作为占位符:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:viewportWidth="164.891"
    android:viewportHeight="75.543"
    android:width="164.891dp"
    android:height="75.543dp"></vector>

在Android Studio的Activity预览中没有指出任何渲染问题,但在运行时我却收到了致命异常:

Caused by: android.view.InflateException: Binary XML file line #22: Binary XML file line #22: Error inflating class ImageView
     Caused by: android.view.InflateException: Binary XML file line #22: Error inflating class ImageView
     Caused by: android.content.res.Resources$NotFoundException: Drawable com.xxxx.yyyy:drawable/product_logo_image with resource ID #0x7f080121
     Caused by: android.content.res.Resources$NotFoundException: File res/drawable/product_logo_image.xml from drawable resource ID #0x7f080121
2个回答

8

更新

您的向量中没有路径,添加一个不绘制任何内容的路径应该会修复错误。

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="dp"
    android:height="1dp"
    android:viewportWidth="1"
    android:viewportHeight="1">

  <path
      android:pathData="M0,0Z"
      android:fillColor="#ffffff"/>

</vector>

2
不好的想法。这个错误在使用AndroidX时导致了Android 5.1崩溃:java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.core.content.res.ComplexColorCompat.isStateful()' on a null object reference - xinaiz
好的,谢谢。我不知道,你可以随意编辑答案并应用修复。 - Manohar

-1
也许Manohar的回答缺少一些数据,正如xinaiz所评论的那样,以免程序崩溃。
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:viewportWidth="1dp"
    android:viewportHeight="1dp"
    android:width="1dp"
    android:height="1dp">
  <path
      android:fillColor="#00FFFFFF" 
      android:pathData=""/>
</vector>

你可以通过调整widthheight来满足你的需求,填充颜色并不重要,只要在前两个零后将其设置为透明即可。


这个不行。它会抛出异常:java.lang.IllegalArgumentException: 路径字符串不能为空。 - Gustav Karlsson
1
@GustavKarlsson 这个可以用 android {defaultConfig{vectorDrawables.useSupportLibrary = true}} 来实现,也许你漏掉了这个。 - Chisko
我也针对28进行目标设定,因此答案可能已过时。非常感谢您的反馈。 - Chisko
我没有尝试启用那个。也许你应该编辑你的答案来包含它? - Gustav Karlsson
也许我应该包含我的整个设置。 - Chisko

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