Intereting Posts
Получение координат представления относительно корневого макета Содержимое GridView исчезает во время прокрутки Как повлиять на создание кода Delphi XEx для целей Android / ARM? Как удалить номер индикатора выполнения в нижней части индикатора выполнения? Добавить productFlavor в экспериментальную библиотеку плагинов Android gradle Выберите несколько изображений из фотоальбома на Android с помощью намерений Как программно создать макет для фрагмента? Как эффективно реализовать шаблон MVVM для моего приложения для Android, который также облегчит написание тестовых примеров? Layoutmanager.FindFirstCompletelyVisibleItemPosition всегда возвращает -1 Почему ListView повторял каждый шестой элемент? Как управлять «startActivityForResult» на Android? Как читать и редактировать события календаря Android с помощью нового Android 4.0 Ice Cream Sandwich API? Android WebView не загружает URL? Cordova phonegap с использованием внешней веб-страницы в приложении, сохраняя верхний / нижний колонтитул (для навигации) Разница между воссозданием Activity с методом recreate () и startActivity (getIntent ())

Android Support Library: getDrawable независимо, если вектор или нет

При работе с Android> = 5.0,

Drawable d = getResources().getDrawable(R.drawable.icon) 

Правильно анализирует XML и возвращает допустимый допустимый. Но при использовании новой библиотеки векторной библиотеки с возможностью рисования (версия 23.4, Gradle 2.1.2) этот код разбивается под Android 4 .

android.content.res.Resources $ NotFoundException

Вызывается: org.xmlpull.v1.XmlPullParserException: двоичная строка XML-файла # 2: недопустимый вектор тегов

Решение было бы использовать

 Drawable d = VectorDrawableCompat.create(getResources(), R.drawable.icon, null); 

Но это сбой, если ресурс не является векторным ресурсом:

Java.io.FileNotFoundException: Коррумпированный двоичный файл XML

Итак, какой код нужно использовать вместо первой строки, чтобы он работал с Android 4 и Android 6 и с векторными и не векторными чертежами – например, при любых обстоятельствах эта линия использовалась в проекте Android 5.0+? В статье библиотеки поддержки не упоминается способ выполнения этой миграции

Solutions Collecting From Web of "Android Support Library: getDrawable независимо, если вектор или нет"

Я нашел решение.

Вам необходимо добавить поддержку VectorDrawable в свою деятельность вручную.

Попробуйте это в своей деятельности:

 static { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); } 

Вы должны проверить эту запись в блоге для получения дополнительной информации.

Вы можете использовать следующий метод, чтобы получить векторный Drawable в пред 5.0.

 Drawable drawable = AppCompatResources.getDrawable(mContext, mImageTitleResId); 

Еще одно возможное решение, которое я нашел до сих пор

 ResourcesCompat.getDrawable(context.resources, resId, theme) 

И контекст должен быть вашей деятельностью (но не контекстом приложения)