Android5.0以下drawable tag vector错误的解决办法

在Androi 5.0以下的设备可能会报这样的错误:

Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector

解决思路:

1、首先检查兼容性环境配置是否正确,判断是否是环境配置的问题导致出现以上问题的,如果是,请配置好环境,如果不是
请看步骤2

兼容性环境的配置:

(1)首先在使用时,我们需要添加依赖:

compile 'com.android.support:support-vector-drawable:26.1.0'

compile 'com.android.support:appcompat-v7:26.1.0'

(2)打开该模块下的build.gradle文件:

  • 如果当前使用的gradle版本为2.0以上,在android节点下的defaultConfig节点下加入一行代码
vectorDrawables.useSupportLibrary = true
  • 如果使用的gradle版本为2.0以下,1.5以上,则需要在android节点下的defaultConfig节点下加入如下一行代码:
generatedDensities = []

并在android节点下,defaultConfig节点后面加入

aaptOptions {
additionalParameters "--no-version-vectors"
}

(3) 修改布局文件app:srcCompat="@drawable/ic_egg05_got"

(4) 在Activity的oncreate中加入如下代码即可: AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);

2、判断不是兼容性环境配置的问题,检查使用的控件

(1) ImageView,如果加载vector drawable资源的Activity是继承自AppCompatActivity,xml使用ImageView,否则xml中使用AppCompatImageView
,同时android:src=" ";由app:srcCompat=" ";替代

(2)当在非ImageView控件中(Button、TextView等)作为Background、CompoundDrawable时,需要在Activity中加入以下声明:

static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

另外,如果直接在xml布局文件中使用,则必须使用selector、layer-list这种容器包裹起来,不能直接使用 (在代码中设置不需要)

例如:

selector_drawable文件

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="30dp"
android:height="30dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#cccccc"
android:pathData="M8.59,16.34l4.58,-4.59 -4.58,-4.59L10,5.75l6,6 -6,6z"/>
<!--android:fillColor="#FFC7C7CC"--> </vector>

selsetor文件

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/selector_drawable"/>
</layer-list>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/selector_drawable"/>
</selector>

xml文件(以Button为例,其他控件正常替换即可)

<Button
android:id="@+id/radioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Button"
android:textSize="@dimen/text_size_20"
android:drawableRight="@drawable/selector"
/>

(3)若TextView,我们还可以通过重写TextView解决android5.0以下机型崩溃问题,因为AppCompatTextView是没有对CompoundDrawable进行适配的,如果直接使用android:drawableRight=" "等属性加载矢量图,Android5.0以下的
机型可能会出现崩溃,我们需要重写TextView以及它的相关属性。可以参考https://github.com/woxingxiao/VectorCompatTextView重写TextView

Android5.0以下drawable tag vector错误的解决办法(转发)的更多相关文章

  1. Redis 4.0.X版本reshard出现错误的解决办法

    原文链接:https://my.oschina.net/juluking/blog/1606222 原作者的版本是Redis 4.0.6,我的版本是4.0.8,所以猜测是否所有4.0.x版本都有此问题 ...

  2. 关于 NPOI 报 Invalid column index (256). Allowable column range for BIFF8 is (0..255) or ('A'..'IV') 错误的解决办法

    当看到这个错误的时候,网上搜索可以会有些说列数有限制之类的说法,这个说法是相对于 Office 2003 的,在 Office 2007 之前,最多只可以创建  列:在 Office 2007 之后, ...

  3. .net 2.0中半角全角错误的解决办法

    VS2005中.net 2.0编译报错如下所示:'System.Windows.Forms.ImeMode' does not contain a definition for 'OnHalf'.只需 ...

  4. CentOS7 Python3下安装 TensorToolbox 1.0.22时的一些错误及解决办法

    CentOS7 Python3下安装 TensorToolbox 1.0.22 (python3) [jiangshan@localhost ~]$ pip install TensorToolbox ...

  5. IIS7.5中调试.Net 4.0网站出现无厘头500错误的解决办法 (转)

    刚刚 部署了ii7的dll的有x86写的,就会出现以下这样的问题 iis 7 x86,Could not load file or assembly 'Name' or one of its depe ...

  6. VS2010出现FileTracker : error FTK1011编译错误的解决办法

    VS2010出现FileTracker : error FTK1011不知道是不是vs2010的一个bug,反正有人提交了. FileTracker : error FTK1011编译错误的解决办法有 ...

  7. MVC3在IIS7.5发布(部署)报403.14错误的解决办法

    MVC3在IIS7.5发布(部署)报403.14错误的解决办法     错误现象: 报403.14 forbidden错误 web服务器被配置为不列出此目录的内容. 解决办法: 检查站点的处理程序映射 ...

  8. Visual Studio2012打开时弹出“遇到异常:这可能是由某个扩展导致的”错误的解决办法

    Visual Studio2012打开时弹出"遇到异常:这可能是由某个扩展导致的"错误的解决办法: 具体问题如下: 分析原因:网上搜集了以下,出现异常的原因是安装了第三方控件,然后 ...

  9. Oracle的常见错误及解决办法

    ORA-12528: TNS:listener: all appropriate instances are blocking new connections ORA-12528问题是因为监听中的服务 ...

随机推荐

  1. 清除keil编译中间文件的脚本

    清除keil编译生成的中间文件,减小项目体积. keykill.bat del *.bak /s del *.ddk /s del *.edk /s del *.lst /s del *.lnp /s ...

  2. 【2017-11-26】Linq表连接查询

    class Program { static void Main(string[] args) { //Linq创建的数据库上下文对象db DataClasses2DataContext db = n ...

  3. *p 和p[i] 区别

    注意:*(arr+ n -1)指向的 是原来&a[n-1]是个地址 与arr[n-1]不同 !!重点!

  4. JDK源码那些事儿之红黑树基础下篇

    说到HashMap,就一定要说到红黑树,红黑树作为一种自平衡二叉查找树,是一种用途较广的数据结构,在jdk1.8中使用红黑树提升HashMap的性能,今天就来说一说红黑树,上一讲已经给出插入平衡的调整 ...

  5. dpkg: error processing package XXX (--configure) 解决方法 (ubuntu右上角红色警告)

    在 Ubuntu 执行 sudo apt-get upgrade 时,出现了如下的报错: Setting up bluez (4.101-0ubuntu13.1) ... reload: Job is ...

  6. Java8-Lambda-No.01

    import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util ...

  7. Codeforces Round #539 (Div. 1) C. Sasha and a Patient Friend 动态开点线段树

    题解看这里 liouzhou_101的博客园 更简洁的代码看这里: #include <bits/stdc++.h> using namespace std; typedef long l ...

  8. Sort Letters by Case

    Given a string which contains only letters. Sort it by lower case first and upper case second. Examp ...

  9. final详解

    final的含义? final:java中的关键字,意为“终态的”或者“无法改变的”.可用来修饰类.变量.方法. 变量(成员变量.静态变量.局部变量) 注意: 1.final变量即为常量,通常常量名大 ...

  10. Ubuntu 执行 apt-get install &#215;&#215;&#215; 报错

    执行apt-get install fcitx时,报如下错误 grub-pc E: Sub-process /usr/bin/dpkg returned an error code (1) 通过执行下 ...