Ich benutze die Support-Bibliothek, um Vektorgrafiken auf Android Kitkat anzuzeigen. Wenn ich meine App auf Emulater teste, sehe ich keines dieser Bilder. Ich habe ein separates Layout für Android Lollipop und höher erstellt und es hat perfekt funktioniert (ich denke, weil ich src
Attribut anstelle von srcCompat
Hier ist der Code, in dem ich die Support-Bibliothek verwende) verwende
<LinearLayout android:layout_alignParentBottom="true"
android:id="@+id/lake_detail"
android:background="@drawable/my_fishing_plan_footer_line"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="90dp"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
android:layout_marginRight="3dp"
android:id="@+id/fire_logo"
android:layout_width="20sp"
android:layout_height="20sp">
<ImageView
android:tint="#d74313"
app:srcCompat="@drawable/circle_icon"
android:layout_width="30sp"
android:layout_height="30sp" />
<ImageView
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
app:srcCompat="@drawable/lauzaviete"
android:layout_width="25dp"
android:layout_height="25dp" />
</RelativeLayout>
und es ist seltsam, weil ich die Bilder im Android Studio Vorschaufenster sehe.
android.support.v7.widget.AppCompatImageView
und stellen Sie sicher, dass Sie die neueste Support-Version verwenden.Antworten:
Ursprüngliche Antwort
Verwenden Sie
android.support.v7.widget.AppCompatImageView
stattImageView
in Ihrem Layout wie folgt:<LinearLayout ... xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <android.support.v7.widget.AppCompatImageView android:tint="#d74313" app:srcCompat="@drawable/circle_icon" android:layout_width="30sp" android:layout_height="30sp" /> <android.support.v7.widget.AppCompatImageView android:layout_centerVertical="true" android:layout_centerHorizontal="true" app:srcCompat="@drawable/lauzaviete" android:layout_width="25dp" android:layout_height="25dp" /> </LinearLayout>
Siehe die
AppCompatImageView
Dokumente hier undapp:srcCompat
hier .Stellen Sie außerdem Folgendes sicher:
Richten Sie Ihre
build.gradle
android { defaultConfig { vectorDrawables { useSupportLibrary = true } } }
Dokumente: https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.VectorDrawablesOptions.html#com.android.build.gradle.internal.dsl.VectorDrawablesOptions: useSupportLibrary
Erweitern Sie Ihre
Activity
mitAppCompatActivity
public final class MainActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
Stellen Sie bei der Verwendung
app:srcCompat
sicher, dass Ihr Layout die richtigen Deklarationen enthält:<LinearLayout ... xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> ... </LinearLayout>
Optional (Warnung: Bitte lesen Sie die Dokumente):
setCompatVectorFromResourcesEnabled
in IhrerApplication
Klassepublic class App extends Application { @Override public void onCreate() { super.onCreate(); // Make sure we use vector drawables AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); } }
Dokumente: https://developer.android.com/reference/android/support/v7/app/AppCompatDelegate.html#setCompatVectorFromResourcesEnabled(boolean)
quelle
ImageView
docs, developer.android.com/reference/android/widget/ImageView.html , hat nichtsrcCompat
aberAppCompatImageView
tut: developer.android.com/reference/android/support/v7/widget/... .AppCompatImageView
im Layout verwenden. Das Dokument sagt: "Dies wird automatisch verwendet, wenn Sie ImageView in Ihren Layouts verwenden. Sie sollten diese Klasse nur manuell verwenden müssen, wenn Sie benutzerdefinierte Ansichten schreiben."Ich hatte ein ähnliches Problem und nachdem ich alle Schritte aus Jared Burrows 'Antwort befolgt hatte, war das Problem nicht gelöst.
Es stellt sich heraus, dass der "App" -Namensraum in meiner Layoutdatei wie folgt festgelegt wurde:
xmlns:app="http://schemas.android.com/tools"
Anstatt von:
xmlns:app="http://schemas.android.com/apk/res-auto"
Nach dem Ändern wurde das Problem behoben
quelle
Wenn jemand anderes auf dieses Problem stößt und Androidx verwendet , versuchen Sie es mit androidx.appcompat.widget.AppCompatImageView
quelle
In Summe:
Fügen Sie in Ihr Modul eine Vektor-Zeichenunterstützung ein (build.gradle)
defaultConfig { vectorDrawables.useSupportLibrary = true }
Anstelle von
android:src="@drawable/icon"
Gebrauchapp:srcCompat="@drawable/icon"
Stellen Sie sicher , Ihr
Activity extends AppCompatActivity
ohne diesen Schritt ist nicht möglich , Vektor - Bild zu zeigen , mitapp:srcCompat
quelle
verwenden:
android:background="@drawable/circle_icon"
Anstatt von:
app:srcCompat="@drawable/circle_icon"
quelle
Implementieren und
app:srcCompact
und dann können Sie es auf dem verwendenImageView
implementation 'com.android.support:appcompat-v7:28.0.0'
Stellen Sie sicher, dass Sie die richtige Version implementieren.
Dann in deinem
build.gradle
Setandroid.defaultConfig.vectorDrawables.useSupportLibrary = true
defaultConfig { //... vectorDrawables { useSupportLibrary true } }
quelle
Das Problem war auch mit meinem Code. Lösung: Da Android auf Androidx-Artefakte aktualisiert wird, habe ich anstelle von "Normal" verwendet und es hat funktioniert!
quelle
Stellen Sie außerdem sicher, dass sich Ihre Vektorzeichnungen in
drawable
und nicht in befindendrawable-anydpi
.Ich habe oft Probleme, wenn sich die Grafiken im
drawable-anydpi
Ordner befinden.quelle