Android invalid drawable tag vector错误的解决办法

在Android中使用Vector来替代传统的图片有很多好处,比如自适应,体积小,不失真等。但是,在Android5.0以下版本使用时会有兼容性问题,在Androi 5.0以下的设备可能会报这样的错误:
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector

解决办法
1.首先在使用时,我们需要添加依赖
例如:

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

2.在defaultConfig下面添加声明
vectorDrawables.useSupportLibrary = true

例如:

android {
    compileSdkVersion 25
    buildToolsVersion "26.0.0"
    publishNonDefault true


    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 2
        versionName "1.1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

在使用的使用注意用srcCompat代替src


3.在Activity的oncreate中加入如下代码即可

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
     
    }

这样一来,我们就可以在5.0以下的设备上使用Vector了。

需要注意的是,如果我们在EditText中使用 android:drawableLeftandroid:drawableStart 时,有可能还会报错。

解决办法。
首先将你的svg资源用selector标签包裹起来。
例如:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item  android:drawable="@drawable/ic_user"></item>

</selector>

然后使用的时候用selector代替即可。


    <EditText
        android:id="@+id/userEt"
        style="@style/loginEt"
        android:layout_below="@+id/logo2"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="42dp"
        
        android:drawableLeft="@drawable/login_user_icon_selector"
        android:drawableStart="@drawable/login_user_icon_selector"
       
        android:hint="请输入用户名"
        android:inputType="text" />

好了,大概就这些,希望能帮到你。

©️2020 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值