NavigationDrawer ResourcesNotFound

时间:2016-02-20 10:12:04

标签: android svg vector navigation-drawer android-navigation-drawer

我在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。

提前感谢。

2 个答案:

答案 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

中的映射