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问题是因为监听中的服务 ...
随机推荐
- Hibernate-validate工具类,手动调用校验返回结果
引言:在常见的工程中,一般是在Controller中校验入参,校验入参的方式有多种,这里介绍的使用hibernate-validate来验证,其中分为手动和自动校验,自动校验可以联合spring,使用 ...
- 二叉树BinaryTree构建测试(无序)
此测试仅用于二叉树基本的性质测试,不包含插入.删除测试(此类一般属于有序树基本操作). //二叉树树类 public class BinaryTree { public TreeNode root; ...
- Eclipse安装windowsbuilder
详见:https://www.cnblogs.com/plusplus/p/9864708.html https://www.cnblogs.com/lsy-blogs/p/7717036.html ...
- impala 下的SQL函数
#把时间转化成时间戳select cast('1966-07-30' as timestamp);select cast('1985-09-25 17:45:30.005' as timestamp) ...
- MyBaties --day1
今天就来聊聊这个东西 今天的主角相信大家也看到了 MyBaties 是个什么东东 它有什么作用?怎么用?好不好用今天来说说 .说到MyBaties 就不得不谈到JDBC大家可能都知道 JDBC用来操 ...
- Linux shell批量执行scp脚本工具
转载: linux shell + expect:批量scp脚本工具 2011-09-13 15:51:06 分类: Python/Ruby 最近在准备一个部署的任务,其中有一 ...
- (13)input输入函数
(1)input 等待用户动态输入一个值,注意得到的值是一个字符串类型 提示用户输入用户名和密码: 如果用户名是admin , 并且密码是000 , 提示用户恭喜你,登陆成功 否则提示用户名或密码错误 ...
- [Python] Codecombat攻略 远边的森林 Forest (1-40关)
首页:https://cn.codecombat.com/play语言:Python 第二界面:远边的森林Forest(40关)时间:2-6小时内容:if/else.关系操作符.对象属性.处理输入网页 ...
- less混合
混合(mixin)变量 .border{ border: 5px solid pink; } .box{ width: 300px;height:300px; .border; } => .bo ...
- less注释
less中的注释 1.可以使用css中的注释(/***/) 2.也可以用//注释 //编译时会自动过滤掉 /**我是会被编译的*/ ul{ // padding: 0px; // height: ...