Immer wenn ich eine ImageView mit einem Symbol erstelle, das mit den Vector Assets von Android Studio hinzugefügt wurde, wird in der Zeile eine Fehlermeldung angezeigt app:srcCompat="@drawable/ic_play"
Wenn ich das app:srcCompat
mit ändere android:src
, ist der Fehler verschwunden, aber das Symbol sieht pixelig aus.
Was ist der Hauptunterschied zwischen
app:srcCompat="@drawable/ic_play"
und
android:src="@drawable/ic_play"
quelle
build.gradle
, aber es funktioniert immer noch nicht, irgendwelche Ideen?Wenn Sie verwenden ,
android:src="@drawable/some_vector"
ohnevectorDrawables.useSupportLibrary = true
in build.gradle Datei und Ihre App Vektor - Bilder (Vektor ziehbar), dann beim Aufbau der apk - Datei Android gradle Plugin erzeugt eine Menge * .png - Dateien für verschiedene Bildschirme (hdpi, xhdpi ...) aus Jeder Ihrer Vektoren kann gezeichnet werden (nur für API = <19). Das Ergebnis - größere Größe von apk .Bei Verwendung
app:srcCompat="@drawable/some_vector"
mitvectorDrawables.useSupportLibrary = true
Android werden Vektor-Zeichendateien verwendet, ohne Dateien zu generieren*.png
.Sie können dies mit dem Android Studio apk analyzer tool überprüfen. Bauen Sie einfach apk mit und ohne
vectorDrawables.useSupportLibrary = true
.Ich denke, das ist der Hauptunterschied.
quelle
Verwenden:
Das srcCompat-Attribut wird tatsächlich in der AppCompat-Bibliothek definiert. Wichtig: Dazu müssen Sie den entsprechenden Namespace hinzufügen.
Hinweis
Was Sie bekommen, scheint nur ein Flusenfehler zu sein, der ignoriert werden kann. Ich habe versucht, den gleichen Fehler zu bekommen, aber es funktioniert richtig.
Sie können verwenden
tools:ignore="MissingPrefix"
, um diesen Fehler vorübergehend zu vermeiden.Ich hoffe das hilft.
quelle
Bei Verwendung
AppCompat
mitImageView
(oder Unterklassen wieImageButton
undFloatingActionButton
) können Sie das neueapp:srcCompat
Attribut verwenden, um auf Vektor-Drawables auf älteren Versionen der Plattform (sowie auf alle anderen verfügbaren Drawablesandroid:src
) zu verweisen .android.support.v7.appcompat.R.attr.srcCompat :
Vergessen Sie nicht,
xmlns:app="http://schemas.android.com/apk/res-auto"
bei der Verwendung hinzuzufügenapp:srcCompat
.quelle
Vektoren und animierte Vektoren wurden nur in neueren Versionen des Frameworks unterstützt. srcCompat kann mit der Kompatibilitätsbibliothek verwendet werden, damit sie funktionieren. Dies funktioniert jedoch nur mit bestimmten Ansichten in der Unterstützungsbibliothek. Beachten Sie, dass App: anstelle von Android: verwendet wird. Dies bedeutet, dass es nicht Teil des Frameworks ist, sondern ein von Ihrer App definierter Parameter.
quelle
Es wird darauf hingewiesen, dass AppCompatActivity src in der Support-Bibliothek enthalten ist
bezieht sich auf einfache Aktivität.
quelle
Bei Verwendung
AppCompat
mitImageView
(oder Unterklassen wieImageButton
undFloatingActionButton
) können Sie das neueapp:srcCompat
Attribut verwenden, um auf Vektor-Drawables (sowie auf alle anderen verfügbaren Drawablesandroid:src
) zu verweisen . Und wenn Sie Drawables zur Laufzeit ändern, können Sie dieselbesetImageResource()
Methode wie zuvor verwenden (keine Änderungen dort).Die Verwendung von
AppCompat
undapp:srcCompat
ist die kinderleichteste Methode zum Integrieren von Vektorzeichnungen in Ihre App. Sie werden feststellen, dass die direkte Referenzierung von Vektor-Drawables außerhalb vonapp:srcCompat
vor Lollipop fehlschlägt .quelle
Android 5.0 (API Level 21) und höher bietet Unterstützung für Vektorzeichnungen. Um Vektorzeichnungen in älteren Versionen zu unterstützen, wurde folgende App hinzugefügt: srcCompat
quelle