У меня возникла проблема с новой обратной совместимостью с VectorDrawables. В библиотеке поддержки 23.2 была новая функция для обратной совместимости с Android VectorDrawables.
У меня есть ImageView, которому назначается SelectorDrawable. Этот Drawable содержит несколько VectorDrawables, поэтому я решил использовать приложение: srcCompat для совместимости. Но это не работает на моей Galaxy S2 с Android 4.1.2.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_gps_fixed_24dp"android:state_activated="true" android:state_selected="true"></item>
<item android:drawable="@drawable/ic_gps_not_fixed_24dp" android:state_activated="true" android:state_selected="false"></item>
<item android:drawable="@drawable/ic_gps_not_fixed_24dp" android:state_activated="false" android:state_selected="true"></item>
<item android:drawable="@drawable/ic_gps_off_24dp" android:state_activated="false" android:state_selected="false"></item>
<item android:drawable="@drawable/ic_gps_not_fixed_24dp"></item>
</selector>
Все чертежи являются векторными xml файлами.
При использовании этого SelectorDrawable с srcCompat я получаю эту ошибку:
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_gps_fixed_24dp.xml from drawable resource ID #0x7f0201c1
at android.content.res.Resources.loadDrawable(Resources.java:1951)
at android.content.res.Resources.getDrawable(Resources.java:672)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:173)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:881).xml from drawable resource ID #0x7f0201c1
Использование android: src еще хуже.
Если я использую одну из векторных чертежей с приложением: srcCompat все работает нормально. Поэтому я думаю, что это проблема с SelectorDrawable и совместимостью.
У кого-то была такая же проблема и нашли решение, или в настоящее время невозможно использовать VectorDrawables в SelectorDrawables до Android 5?
Краткие факты:
- Компилировать целевой API 23
- Поддержка Libraray 23.3.0
- vectorDrawables.useSupportLibrary = true
- Gradle 2.0