AppCompat 23.3 Поддержка векторов больше не работает?

Я использовал вспомогательные векторные элементы, добавленные в Support Library 23.2 вместе с AppCompat. Я использовал векторные чертежи как с app:srcCompat и внутри StateListDrawable поэтому я мог использовать их с android:drawableLeft для моего TextView.

Начиная с обновления до версии 23.3.0 AppCompat работают только векторы в app:srcCompat . Всякий раз, когда я ссылаюсь на него,

 FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.package.name/.MainActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class Button ... Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class Button ... Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #14: invalid drawable tag vector at android.graphics.d 

Что изменилось, что в настоящее время приводит к тому, что мои векторы поддержки поддержки не работают в некоторых случаях?

Обновление: они снова includeся в библиотеку поддержки 23:

Для пользователей AppCompat мы добавили API-интерфейс для повторного включения поддержки векторных чертежей из ресурсов (поведение, обнаруженное в 23.2) через AppCompatDelegate.setCompatVectorFromResourcesEnabled (true); – Имейте в виду, что это все еще может вызвать проблемы с использованием памяти и проблемы с обновлением экземпляров Configuration, поэтому почему она отключена по умолчанию.

Проверьте эту ссылку: 23.4.0 доступно сейчас
————————————————– ———

Согласно объявлению о выпуске для Android Support Library 23.3 :

Для пользователей AppCompat мы решили удалить функциональные возможности, которые позволяют использовать векторные чертежи из ресурсов на устройствах, предшествующих Lollipop, из-за проблем, обнаруженных в реализации в версии 23.2.0 / 23.2.1 [ https://code.google. com / p / android / issues / detail? id = 205236 , https://code.google.com/p/android/issues/detail?id=204708 ]. Использование app:srcCompat и setImageResource() продолжают работать.

Таким образом, это ожидаемое изменение поведения. Вам придется использовать не-векторную графику для любого случая, который не обрабатывается srcCompat .

Если вы хотите продолжать использовать векторы до API 21, вы можете удалить строку

 vectorDrawables.useSupportLibrary = true 

(или эквивалент, если вы используете плагин 1.5 Gradle, как показано в сообщении блога 23.2 ).

Это заставит Android Studio генерировать PNG во время компиляции приложений с minSdkVersion меньше, чем API 21, используя ваши векторы на устройствах API 21+, позволяя сохранить тот же код, что и с 23.2.1 за счет дополнительного размера APK.

Поддержка VectorDrawable для pre-Lollipop была добавлена ​​в Support Library 23.2.0, а затем частично удалена в 23.3.0. В 23.4.0 и выше (не менее 25.1.0) эта удаленная часть возвращается, но за необязательным флагом (потому что она поставляется с ценой).

Подводя итог: в библиотеке поддержки 23.4.0, по крайней мере, 25.1.0, вы можете заставить VectorDrawable работать в некоторых случаях .

Я сделал эту диаграмму, чтобы помочь.

VectorDrawable cheatsheet

Использовать векторы как составные файлы (например, для текстового просмотра) без использования

 AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 

что приводит к документированному использованию большой памяти, просто надуйте вектор, используя

 Drawable drawable = AppCompatResources.getDrawable( getContext(), R.drawable.vector_resID ); if( drawable != null ) drawable.setBounds( 0, 0, iconSize, iconSize ); TextViewCompat.setCompoundDrawablesRelative( textView, null, null, drawable, null); 

Так работает navDrawer

  • Создание SearchView, который выглядит как руководство по разработке материалов
  • Цвет анимированного ActionBarDrawerToggle в ActionBar
  • Установите вкладки ActionBar внизу в ActionBarActivity
  • getActionBar () возвращает Null (AppCompat-v7 21)
  • Что такое расширение AppCompatActivity по сравнению с ActionBarActivity?
  • Встраивание объявлений в Recyclerview
  • Как изменить значки меню навигации и переполнения панели инструментов (appcompat v7)?
  • Вкладка не принимает полную ширину на планшетном устройстве
  • Как добавить android.support.v7.widget.GridLayout в intelliJidea?
  • Android Lollipop, AppCompat ActionBar пользовательский вид не занимает всю ширину экрана
  • Xamarin Forms Android Error: установите пакет «Android Support Library»,
  • Давайте будем гением компьютера.