Android5.0以下drawable tag vector错误的解决办法(转发)

Android5.0以下drawable tag vector错误的解决办法(转发),第1张

概述Android5.0以下drawabletagvector错误的解决办法在Androi5.0以下的设备可能会报这样的错误:Causedby:org.xmlpull.v1.XmlPullParserException:BinaryXMLfileline#1:invaliddrawabletagvector解决思路:1、首先检查兼容性环境配置是否正确,判断是否是环境配置的问题导 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、@R_42_3419@这种容器包裹起来,不能直接使用 (在代码中设置不需要)

例如:

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文件

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

<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错误的解决办法(转发)全部内容,希望文章能够帮你解决Android5.0以下drawable tag vector错误的解决办法(转发)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1112435.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存