Ответ 1
Lint, инструмент анализа кода Android, пока не знает о поддерживающих векторных чертежах. Вы можете смело игнорировать ошибку, добавив tools:ignore="MissingPrefix"
в тег ImageView
.
Я обновился до Android Support Library 23.2.0 и добавил
vectorDrawables.useSupportLibrary = true
для моего build.gradle, так что у меня есть векторная поддерживаемая поддержка для apis ниже 21. (подробнее см. здесь).
Я также заменил
android:src="@drawable/ic_create_black_24dp"
с
app:srcCompat="@drawable/ic_create_black_24dp"
в каждом изображении, использующем векторные чертежи.
Приложение компилируется и работает отлично, но отчеты анализа кода:
Ошибка: (56, 9) Неожиданный префикс пространства имен "приложение" найден для тега
ImageView
Почему это так? Почему он компилируется, хотя я получаю ошибки?
EDIT: я добавил
xmlns:app="http://schemas.android.com/apk/res-auto"
в моем корневом макете.
Lint, инструмент анализа кода Android, пока не знает о поддерживающих векторных чертежах. Вы можете смело игнорировать ошибку, добавив tools:ignore="MissingPrefix"
в тег ImageView
.
Измените ImageView на android.support.v7.widget.AppCompatImageView в XML
Вы видите эту ошибку, поскольку исходный ImageView не имеет атрибута srcCompat. Этот атрибут используется только AppCompatImageView, который вводится вместо объявленного вами ImageView. Эта ошибка легко обнаружить при использовании перегруженных устройств просмотра. Lint выполняет статический анализ и не знает о хаках, которые вы можете использовать с xml из кода.
Необходимо добавить этот макет верхнего плана:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
Добавьте xmlns:app="schemas.android.com/apk/res-auto"
как атрибут либо к вашему тегу ImageView
, либо к тегу Top-Level
, например LinearLayout
, CoordinatorLayout
, RelativeLayout
.. и т.д.
<ImageView android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/ic_create_black_24dp"
xmlns:app="http://schemas.android.com/apk/res-auto"/>
или в родительском макете
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto"/>