VectorDrawable异常处理

来源:互联网 发布:不收会费的淘宝兼职 编辑:程序博客网 时间:2024/06/07 01:47

问题

这里写图片描述

android.content.res.Resources$NotFoundException: File res/drawable-xxhdpi-v4/ic_marker_inactive.png from xml type xml resource ID #0x7f02005d. If the resource you are trying to use is a vector resource, you may be referencing it in an unsupported way. See AppCompatDelegate.setCompatVectorFromResourcesEnabled() for more info.at android.content.res.Resources.loadXmlResourceParser(Resources.java:2361)at android.content.res.Resources.loadXmlResourceParser(Resources.java:2316)at android.content.res.Resources.getXml(Resources.java:988)at android.support.graphics.drawable.VectorDrawableCompat.create(VectorDrawableCompat.java:586)at com.github.vipulasri.timeline.utils.VectorDrawableUtils.getDrawable(VectorDrawableUtils.java:24)at com.github.vipulasri.timeline.utils.VectorDrawableUtils.getDrawable(VectorDrawableUtils.java:31)at com.github.vipulasri.timeline.TimeLineAdapter.onBindViewHolder(TimeLineAdapter.java:63)at com.github.vipulasri.timeline.TimeLineAdapter.onBindViewHolder(TimeLineAdapter.java:23)at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6356)at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6389)at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5335)at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5598)at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5440)at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5436)at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2224)at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1551)at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1511)at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:595)at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3583)at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3025)at android.view.View.measure(View.java:16497)at android.widget.RelativeLayout.measureChild(RelativeLayout.java:689)at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:473)at android.view.View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:714)at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:90)at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1391)at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:784)at android.view.View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)at android.view.View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)at android.view.View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)at android.view.View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)at android.widget.LinearLayout.onMeasure(LinearLayout.java:

解决方法

  VectorDrawableCompat依赖与AAPT的一些功能,它能保持最近矢量图使用的添加的属性ID,以便他们可以被v21之前的引用。
  如果你没有启用这个标志,当你在KitKat上运行你的APP你会看到以下(或者类似)上面这种错误。
  我们可以通过配置app.gradle来启用它。

gradle2.0及以上

android {    defaultConfig {        vectorDrawables.useSupportLibrary = true    }}   

gradle2.0以下

android {    defaultConfig {        // Stops the Gradle plugin’s automatic rasterization of vectors        generatedDensities = []    }    // Flag to tell aapt to keep the attribute ids around    aaptOptions {        additionalParameters "--no-version-vectors"    }} 
原创粉丝点击