2016-10-02 4 views
1

Ich werde sagen, dass ich einige Antworten auf diese Frage zu stackoverflow bereits gesehen habe, aber nur eine schnelle 'Lösung' zur Verfügung stelle. Ich möchte, wenn möglich, auch verstehen, warum das passiert (eine Antwort mit einigen Details).Kein Ressourcenbezeichner für das Attribut 'srcCompat' im Paket '....' gefunden

Nun zu der Frage: Ich habe gerade Android-Entwicklung neu gestartet, mit Android Studio 2.2. Ich habe eine iOS-App, die ich auf Android portieren möchte (das heißt, für Android neu erstellen). Ich habe mit einer Basisvorlage aus Android Studio begonnen, ein Constraint-Layout und 2 ImageViews mit 2 PNG-Dateien hinzugefügt, die ich im DRAWABLE-Ordner kopiert habe.

ohne Änderungen vorzunehmen oder was auch immer, wenn ich zu bauen versuche ich diesen Fehler:

Fehler: (11) keine Ressourcenkennung für das Attribut gefunden ‚srcCompat‘ im Paket ‚x.y.z‘. Dies geschieht für beide Bilder. Hier ist die Layout-Datei:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/lib/x.y.z" 
xmlns:app2="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="x.y.z.MainActivity"> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app2:srcCompat="@drawable/pngFile1" 
    android:id="@+id/imageView" 
    app2:layout_constraintBottom_toBottomOf="parent" 
    android:layout_marginEnd="8dp" 
    app2:layout_constraintRight_toRightOf="parent" 
    android:layout_marginBottom="8dp" 
    android:layout_marginRight="8dp" /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app2:srcCompat="@drawable/pngFile2" 
    android:id="@+id/imageView2" 
    app2:layout_constraintBottom_toTopOf="@+id/imageView" 
    app2:layout_constraintRight_toRightOf="@+id/imageView" 
    android:layout_marginBottom="8dp" /> 

Nun, hier sind einige Dinge, die Ich mag würde verstehen, um eine richtige Antwort auf meine Frage zu haben:

  • einige die anderen Antworten, die ich auf SO gefunden habe, schlagen vor, den Standard zu ändern:

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

zu:

xmlns:app="http://schemas.android.com/apk/lib/x.y.z" 

Es stimmt, dass dies den Fehler aus dem Build entfernt, aber was mir seltsam erscheint (mit meinem wenig bis keine Android-Erfahrung), ist, dass Android Studio erstellt dann eine andere ähnliche Linie, wenn ich das zweite Bild hinzufügen:

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

Und wie wir sehen können, verwendet es diese für die Bilder, also wieder die Fehler erscheinen.

Ich erinnere mich, wie vor einem Jahr hatte ich an einer App in Android Studio gearbeitet, und habe fast die gleiche Art und Weise zum Hinzufügen von Bildern/Schaltflächen mit Bildern verwendet und diese Probleme waren nicht da.

Deshalb möchte ich auch verstehen, warum das passiert und wie man es richtig beheben kann.

Vielen Dank im Voraus!

+0

zu dieser Antwort verweise ich ein Projekt habe ich für mehr als ein Jahr gearbeitet haben und das Hinzufügen von Bildern war immer normal und in Ordnung. Kürzlich habe ich das "Constraints Layout" entdeckt, also habe ich angefangen zu verwenden, habe einige ImageViews eingefügt und dann das gleiche Problem, wie du es erwähnt hast. Der Unterschied hier ist die "srcCompat" - warum hat es sich geändert? scheint wie das Aktualisieren der App.Compat auf die neueste Version könnte das Problem zu lösen, ich habe es noch nicht getan, weil ich eine Abhängigkeit von früheren Versionen habe. –

+0

werfen Sie einen Blick hier, es könnte Ihnen einen Hintergrund geben - wir verwenden eine Vorschauversion des Constraint-Layouts, das einige seltsame Verhaltensweisen erklären kann https://sites.google.com/a/android.com/tools/recent –

Antwort

0
<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentEnd="true" 
    android:background="@drawable/cooltext201199220690445" /> 

ich nur veränderte Mine in so und es für mich gearbeitet ich nur, dass srccompat entfernt und ersetzen sie durch „Hintergrund“ und ich vollständig entfernt „xmlns: app2 =“ http://schemas.android .com/apk/res-auto“Hoffnung, dies hilft Ihnen :)

+0

Es hat für mich funktioniert, ohne den xmlns: app-Teil entfernen zu müssen. Warum passiert dieser Fehler? Es ist Android Studio, das die App generiert wird: srcCompat – Donato

0

Fist of all Sie auf die Version von android Studio konzentrieren müssen Sie verwenden. Sie sollten auch einen Blick auf die minSdkVersion und targetSdkVersion. Versuchen zu verwenden android:src="" anstelle von app2:srcCompat=

app2:srcCompat= suports older APIs when loading vectorDrawable. 

Wenn Sie es verwenden möchten, dann ändern Sie Ihren Build.gradile wie

android { 
    defaultConfig { 
    vectorDrawables.useSupportLibrary = true 
    } 
} 

Für weitere Informationen Sie in diesem link

beziehen oder Sie können bei stackoverflow

Verwandte Themen