Android: В чем разница между приложением: srcCompat = "" and android: src = ""?

Всякий раз, когда я создаю ImageView со значком, добавленным с помощью векторного ресурса Android Studio, я получаю ошибку в линейном app:srcCompat="@drawable/ic_play"

И когда я меняю app:srcCompat="" с android:src="" ошибка исчезла, но значок выглядит неровным.

В чем основное отличие

 app:srcCompat="@drawable/ic_play" 

а также

 android:src="@drawable/ic_play" 

Solutions Collecting From Web of "Android: В чем разница между приложением: srcCompat = "" and android: src = ""?"

Приложение: srcCompat

Является самым надежным способом интеграции векторных чертежей в ваше приложение. Ветвители Vector позволяют заменять несколько активов png на единую векторную графику, определенную в XML. Хотя ранее они были ограничены Lollipop и более высокими устройствами

Заметка

Начиная с Android Support Library 23.3.0 , поддержка векторных чертежей может быть загружена только через app:srcCompat .

Вам нужно добавить vectorDrawables.useSupportLibrary = true в файл build.gradle

  // Gradle Plugin 2.0+ android { defaultConfig { vectorDrawables.useSupportLibrary = true } } 

Android: ЦСИ

Устанавливает возможность рисования в качестве содержимого этого ImageView. Он будет отображаться в исходном размере. Нет автоматического масштабирования.

Векторы и анимированные векторы поддерживались только в последних версиях фреймворка. SrcCompat может использоваться с библиотекой совместимости, чтобы заставить их работать, но это работает только с определенными представлениями в библиотеке поддержки. Обратите внимание, что приложение: используется вместо android :. Это означает, что это не часть фреймворка, а параметр, определенный вашим приложением.

Использование:

Приложение: srcCompat = "@ вытяжке / backImage"

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

 xmlns:app="http://schemas.android.com/apk/res-auto" 

Заметка

То, что вы получаете, похоже, что это просто ошибка lint, которую можно игнорировать. Я пробовал и имею ту же ошибку, но работает правильно.

Вы можете использовать tools:ignore="MissingPrefix" чтобы избежать этой ошибки временно.

Надеюсь, это поможет.

 app:srcCompat="some_resource" 

Ссылается на то, что именно AppCompatActivity src входит в библиотеку поддержки в то время как

 android:src="some_resource" 

Относится к простой деятельности.

Android 5.0 (API уровня 21) и выше обеспечивает поддержку векторной графики, чтобы поддерживать векторные чертежи в более старых версиях приложения: добавлен srcCompat

При использовании AppCompat с ImageView (или подклассами, такими как ImageButton и FloatingActionButton ) вы сможете использовать новое app:srcCompat атрибут app:srcCompat для ссылок на векторные чертежи на более ранних версиях платформы (а также любые другие доступные для android:src ) .

Android.support.v7.appcompat.R.attr.srcCompat :

srcCompat

Устанавливает возможность рисования в качестве содержимого этого ImageView. Позволяет использовать векторную версию при работе на старых версиях платформы.

Может быть ссылкой на другой ресурс в форме "@[+][package:]type/name" или атрибут темы в форме "?[package:]type/name" .


Не забудьте вставить xmlns:app="http://schemas.android.com/apk/res-auto" при использовании app:srcCompat .

При использовании AppCompat с ImageView (или подклассами, такими как ImageButton и FloatingActionButton) вы сможете использовать новое приложение: атрибут srcCompat для ссылок на векторные чертежи (а также любые другие доступные для android: src): Повторное изменение чертежей во время выполнения, вы сможете использовать тот же метод setImageResource (), что и раньше, – никаких изменений там нет. Использование AppCompat и приложения: srcCompat – самый надежный способ интеграции векторных чертежей в ваше приложение. Вы найдете прямое обращение к векторным чертежам вне приложения: srcCompat провалится до Lollipop.