我在inkscape中制作了一些自定义图标,保存为svg并将svg转换为矢量drawable。 drawable我保存在drawable-v21
文件夹下。在此之后,我将新矢量添加到导航抽屉菜单。在此之后我打开包含菜单的布局,我看到我的自定义图标,一切都很好。
但是,如果我启动应用程序,我会得到android.view.InflateException: Binary XML file line #16: Error inflating class android.support.design.widget.NavigationView
,如果我查看异常,我会在最后看到Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f02004d
。
我不知道为什么,因为我在布局预览中看到了图标。
有什么想法吗?
我做了什么:gradle sync,invalidate和restart android studio。
提前感谢。
答案 0 :(得分:1)
它在版本19上运行
由于您将drawable放在drawable-v21
文件夹中,这意味着它适用于API 21及更高版本,因为您在API 19上运行时没有可绘制的,因此Exception。因此,您必须为其他API提供替代drawable,或者在应用程序在pre 21 API上运行时不访问此drawable
providing resources上的强制性阅读文档。
答案 1 :(得分:1)
对于那些运行相同问题的人,您必须在此文件中搜索调用drawables.xml
的文件,并定义后备/替代图像。它看起来像这样:
<item name="custom_image_xml" type="drawable">@drawable/custom_image</item>
并在导航栏菜单中:
<item
android:id="@+id/nav_overview"
android:icon="@drawable/custom_image_xml"
android:title="@string/action.overview" />
注意:那个“_xml”后缀仅用于解释和说明drawables.xml