java - library - implementation com android support appcompat v7 27.1 1




Библиотека поддержки Android: независимость getDrawable, если вектор или нет (2)

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

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

Правильно анализирует XML и возвращает допустимый чертеж. Но при использовании новой библиотеки поддержки Vector Drawable (версия 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+? В статье из библиотеки поддержки не упоминается способ выполнения этой миграции.


Вы можете использовать следующий метод для рисования Vector Drawable в pre 5.0.

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

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

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

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

static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

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





android-support-design