Android5.0以下drawable tag vector错误的解决办法(转发)
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错误的解决办法(转发)的更多相关文章
- Redis 4.0.X版本reshard出现错误的解决办法
原文链接:https://my.oschina.net/juluking/blog/1606222 原作者的版本是Redis 4.0.6,我的版本是4.0.8,所以猜测是否所有4.0.x版本都有此问题 ...
- 关于 NPOI 报 Invalid column index (256). Allowable column range for BIFF8 is (0..255) or ('A'..'IV') 错误的解决办法
当看到这个错误的时候,网上搜索可以会有些说列数有限制之类的说法,这个说法是相对于 Office 2003 的,在 Office 2007 之前,最多只可以创建 列:在 Office 2007 之后, ...
- .net 2.0中半角全角错误的解决办法
VS2005中.net 2.0编译报错如下所示:'System.Windows.Forms.ImeMode' does not contain a definition for 'OnHalf'.只需 ...
- CentOS7 Python3下安装 TensorToolbox 1.0.22时的一些错误及解决办法
CentOS7 Python3下安装 TensorToolbox 1.0.22 (python3) [jiangshan@localhost ~]$ pip install TensorToolbox ...
- IIS7.5中调试.Net 4.0网站出现无厘头500错误的解决办法 (转)
刚刚 部署了ii7的dll的有x86写的,就会出现以下这样的问题 iis 7 x86,Could not load file or assembly 'Name' or one of its depe ...
- VS2010出现FileTracker : error FTK1011编译错误的解决办法
VS2010出现FileTracker : error FTK1011不知道是不是vs2010的一个bug,反正有人提交了. FileTracker : error FTK1011编译错误的解决办法有 ...
- MVC3在IIS7.5发布(部署)报403.14错误的解决办法
MVC3在IIS7.5发布(部署)报403.14错误的解决办法 错误现象: 报403.14 forbidden错误 web服务器被配置为不列出此目录的内容. 解决办法: 检查站点的处理程序映射 ...
- Visual Studio2012打开时弹出“遇到异常:这可能是由某个扩展导致的”错误的解决办法
Visual Studio2012打开时弹出"遇到异常:这可能是由某个扩展导致的"错误的解决办法: 具体问题如下: 分析原因:网上搜集了以下,出现异常的原因是安装了第三方控件,然后 ...
- Oracle的常见错误及解决办法
ORA-12528: TNS:listener: all appropriate instances are blocking new connections ORA-12528问题是因为监听中的服务 ...
随机推荐
- css多行超出时,超出高度,显示省略号
.layout display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;
- Exams(二分
题意:给你每天要考的科目,和每门科目需要复习多长时间,问最少需要几天才能完成所有的考试. 思路:二分答案,然后判断答案是否可行,这边需要进行贪心,即倒着往前推, 比如第i天,那么前面有i-1天是,可供 ...
- 2018牛客网暑期ACM多校训练营(第二场)I- car ( 思维)
2018牛客网暑期ACM多校训练营(第二场)I- car 链接:https://ac.nowcoder.com/acm/contest/140/I来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 ...
- xss之上传文件的xss,绕过csp,预警机制
xss1.XSS姿势——文件上传XSS https://wooyun.x10sec.org/static/drops/tips-14915.html总结: 1.1.文件名方式,原理:有些文件名可能反应 ...
- PHP mysqli_errno() 函数
返回最近调用函数的最后一个错误代码: <?php // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con=mysqli_connect("localhos ...
- 014_linux驱动之_信号符号名、描述和它们的信号值
符号名 信号值 描述 是否符合POSIX SIGHUP 1 在控制终端上检测到挂断或控制线程死 亡 是 SIGINT 2 交互注意信号 是 SIGQUIT 3 交 互中止信号 是 SIGILL 4 检 ...
- sql server 函数学习
sql server 创建函数 资料 https://docs.microsoft.com/zh-cn/sql/relational-databases/user-defined-functions/ ...
- 04_实时监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M 时,发送报警邮件给root 管理员.
#!/bin/bash#提取根分区剩余空间disk_size=$(df -h / | awk '/\//{print $4}')#提取内存剩余空间disk_size=$(df -h / | awk ' ...
- [CQOI2016]手机号码 数位DP
[CQOI2016]手机号码 用来数位DP入门,数位DP把当前是否需要限制取数范围(是否正在贴着临界值跑,即下面的limited)和一切需要满足的条件全部塞进记忆化搜索参数里面就好了,具体情况转移便好 ...
- centos 利用iptables来配置linux禁止所有端口登陆和开放指定端口的方法
1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放. 下面是命令实现: iptables -P INPUT DROPiptables -P FORWARD DROPiptabl ...