Ошибка анализа кода (Неожиданный префикс пространства имен) после обновления Android Support Library 23.2.0

Я обновился до 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"

в моем корневом макете.

Ответы

Ответ 1

Lint, инструмент анализа кода Android, пока не знает о поддерживающих векторных чертежах. Вы можете смело игнорировать ошибку, добавив tools:ignore="MissingPrefix" в тег ImageView.

Ответ 2

Измените ImageView на android.support.v7.widget.AppCompatImageView в XML

Ответ 3

Вы видите эту ошибку, поскольку исходный ImageView не имеет атрибута srcCompat. Этот атрибут используется только AppCompatImageView, который вводится вместо объявленного вами ImageView. Эта ошибка легко обнаружить при использовании перегруженных устройств просмотра. Lint выполняет статический анализ и не знает о хаках, которые вы можете использовать с xml из кода.

Ответ 4

Необходимо добавить этот макет верхнего плана:

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

Ответ 5

Добавьте 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"/>