2016-02-25 7 views
16

I zaktualizowany do Android Wsparcia Biblioteka 23.2.0 i dodajeCode Analysis błędu (Unexpected namespace prefix) po uaktualnieniu Library Android Pomoc 23.2.0

vectorDrawables.useSupportLibrary = true 

do mojego build.gradle, tak że mam wektor rozciągliwej wsparcia dla apis poniżej 21. (szczegóły: here).

ja również zastąpić

android:src="@drawable/ic_create_black_24dp" 

z

app:srcCompat="@drawable/ic_create_black_24dp" 

w każdym ImageView który używa kanału alfa wektorowej.

Aplikacja kompiluje i działa perfekcyjnie, ale raporty analizy kodu:

Error:(56, 9) Unexpected namespace prefix "app" found for tag ImageView

Dlaczego tak się dzieje? Dlaczego jest to kompilacja, mimo że dostaję błędy?

EDIT: dodałem

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

w moim układ korzeniowy.

Odpowiedz

22

Lint, narzędzie do analizy kodu Androida, wydaje się jeszcze nie wiedzieć o wektorach pomocniczych. Możesz bezpiecznie zignorować błąd, dodając tools:ignore="MissingPrefix" do znacznika ImageView.

+1

Dodaj także narzędzia: src = "@ drawable/ic_create_black_24dp" ', aby wyświetlić podgląd losowania w układzie – osrl

+0

To działa dla mnie. Proszę wspomnieć o tej linii również w twojej odpowiedzi xmlns: tools = "http://schemas.android.com/tools" – VVB

0

trzeba dodać to do górnego układu nadrzędnego:

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

Dodaj xmlns:app="schemas.android.com/apk/res-auto" jako atrybutu albo do swojego ImageView lub do Top-Level Tag jak LinearLayout, CoordinatorLayout, RelativeLayout .. itp

<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"/> 

lub w układzie nadrzędnym

<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      xmlns:app="http://schemas.android.com/apk/res-auto"/> 
+0

sync Gradle spróbuj uruchomić. –

1

Widzisz ten błąd, ponieważ oryginalny ImageView nie ma atrybutu srcCompat. Ten atrybut jest używany tylko przez AppCompatImageView, który jest wstrzykiwany zamiast zadeklarowanego ImageView. Ten błąd jest łatwy do wykrycia podczas korzystania z przeciążonych widoków inflaterów. Lint wykonuje analizę statyczną i nie wie o hackach, które możesz zrobić przy pomocy xml z kodu.

2

Zmień ImageView do android.support.v7.widget.AppCompatImageView w XML

+0

Kudos! To jest przyzwoicie czyste obejście na teraz! – swooby