Всякий раз, когда я создаю ImageView со значком, добавленным с помощью векторных ресурсов Android Studio, я получаю сообщение об ошибке в строке app:srcCompat="@drawable/ic_play"
Когда я меняю app:srcCompat
с android:src
, ошибка исчезает, но значок выглядит неровным.
В чем главное отличие
app:srcCompat="@drawable/ic_play"
и
android:src="@drawable/ic_play"
источник
build.gradle
, но он все еще не работает, есть идеи?Если вы используете
android:src="@drawable/some_vector"
безvectorDrawables.useSupportLibrary = true
файла build.gradle и ваше приложение имеет векторные изображения (векторные изображения), то при создании файла apk Android gradle плагин генерирует множество файлов * .png для разных экранов (hdpi, xhdpi ...) из каждый из ваших векторных изображений (только для API = <19). Результат - увеличенный размер apk .При использовании
app:srcCompat="@drawable/some_vector"
сvectorDrawables.useSupportLibrary = true
Android используются векторные файлы с возможностью рисования без создания*.png
файлов.Вы можете проверить это с помощью инструмента анализатора apk Android Studio. Просто собери apk с и без
vectorDrawables.useSupportLibrary = true
.Думаю, в этом главное отличие.
источник
Использование:
Атрибут srcCompat фактически определен в библиотеке AppCompat. Важно: вам нужно будет добавить для этого соответствующее пространство имен.
Заметка
То, что вы получаете, кажется просто ошибкой lint, которую можно проигнорировать. Я попробовал и получил ту же ошибку, но она работает правильно.
Вы можете использовать,
tools:ignore="MissingPrefix"
чтобы временно не видеть эту ошибку.Надеюсь, это поможет.
источник
При использовании
AppCompat
withImageView
(или подклассов, таких какImageButton
иFloatingActionButton
), вы сможете использовать новыйapp:srcCompat
атрибут для ссылки на векторные чертежи в более старых версиях платформы (а также на любые другие доступные для рисованияandroid:src
) .android.support.v7.appcompat.R.attr.srcCompat :
Не забывайте добавлять
xmlns:app="http://schemas.android.com/apk/res-auto"
при использованииapp:srcCompat
.источник
Векторы и анимированные векторы поддерживались только в последних версиях фреймворка. srcCompat можно использовать с библиотекой совместимости, чтобы заставить их работать, но это работает только с определенными представлениями в библиотеке поддержки. Обратите внимание, что app: используется вместо android :. Это означает, что это не часть фреймворка, а параметр, определяемый вашим приложением.
источник
означает, что это AppCompatActivity src, который входит в библиотеку поддержки, а
относится к простой деятельности.
источник
При использовании
AppCompat
сImageView
(или подклассов, таких какImageButton
иFloatingActionButton
), вы сможете использовать новыйapp:srcCompat
атрибут для ссылки на векторные чертежи (а также на любые другие доступные для рисования объектыandroid:src
). И если вы меняете чертежи во время выполнения, вы сможете использовать тот жеsetImageResource()
метод, что и раньше (без изменений).Использование
AppCompat
иapp:srcCompat
является наиболее надежным методом интеграции векторных чертежей в ваше приложение. Вы обнаружите, что прямая ссылка на векторные чертежи за пределами Lollipopapp:srcCompat
завершится ошибкой. .источник
Android 5.0 (уровень API 21) и выше обеспечивает поддержку векторных изображений, поэтому для поддержки векторных чертежей в более старых версиях было добавлено приложение srcCompat
источник