Я использую векторные рисунки в Android до Lollipop, и вот некоторые из моих библиотек и версий инструментов:
- Android Studio: 2.0
- Плагин Android Gradle: 2.0.0
- Инструменты сборки: 23.0.2
- Библиотека поддержки Android: 23.3.0
Я добавил это свойство в свой уровень приложения Build.Gradle
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
Стоит также упомянуть, что я использую дополнительную прорисовку, такую как LayerDrawable (layer_list), как указано в официальном блоге Android (ссылка здесь), для настройки прорисовки векторных отрисовок вне app:srcCompat
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/search"/>
</level-list>
Вы найдете ссылки на векторные графические объекты вне приложения: srcCompat потерпит неудачу до Lollipop. Однако AppCompat поддерживает загрузку векторных рисованных объектов, когда на них ссылаются в другом рисуемом контейнере, таком как StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable и RotateDrawable. Используя эту косвенную ссылку, вы можете использовать векторные элементы рисования в таких случаях, как атрибут TextViews android: drawableLeft, который обычно не может поддерживать векторные элементы рисования.
Когда я использую app:srcCompat
все работает нормально, но когда я использую:
android:background
android:drawableLeft
android:drawableRight
android:drawableTop
android:drawableBottom
на ImageView
, ImageButton
, TextView
или EditText
до Lollipop, он выдает исключение:
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/search_toggle.xml from drawable resource ID #0x7f0200a9