Ist es möglich, zeichnbare Tönungen für API <21 durchzuführen?
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_calendar"
android:tint="@color/primary" />
Funktioniert einwandfrei, aber nur für Geräte mit API21. Gibt es eine Problemumgehung für Geräte mit niedrigerer API oder AppCompat-Unterstützung? Kann nichts finden.
AppCompatImageView
Dokumenten:This will automatically be used when you use ImageView in your layouts. You should only need to manually use this class when writing custom views.
developer.android.com/reference/android/support/v7/widget/… Die Verwendung des NormalenImageView
im Layout sollte also einwandfrei funktionieren.Sie können dies mit Quellcode erreichen. Bisher wurde das Abtönen von nicht unterstützt
DrawableCompat
. Ab der Support-Bibliothek 22.1 können Sie dies tun, müssen dies jedoch folgendermaßen tun:quelle
ContextCompat.getColor()
stattdessen verwendengetResources().getColor()
.Könnten Sie nicht einfach eine ImageView verwenden, um Ihr Drawable anzuzeigen?
android:tint
funktioniert gut auf älteren API-Ebenen.quelle
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_activated="true" android:drawable="@drawable/ic_home_tinted" /> <item android:drawable="@drawable/ic_home" /> </selector>
Eine ähnliche Frage wurde bereits hier gestellt: https://stackoverflow.com/a/26533340/950427
Android Drawable Tinting wird nur in Android 5.0+ (API 21+) unterstützt. (Es heißt "
At the moment this is limited to coloring the action bar and some widgets.
").Und
Quellen:
http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html
https://chris.banes.me/2014/10/17/appcompat-v21/
quelle
ImageView
unterstützt jetzt auchandroid:tint
über AppCompat, wie in @ Joniks Antwort.AppCompatImageView
nichtImageView
.Jetzt ersetzt AppCompatImageView, AppCompatButton die Schaltfläche ImageView, um den Farbton auf Geräten mit niedrigerer API zu unterstützen. Überprüfen Sie den Link für weitere Details AppCompatImageView , AppCompatButton
quelle
Zum Abtönen von Bildern können Sie verwenden
imageView.setColorFilter(int color)
. Dies funktioniert ab API 8 und dient dazu, mein schwarzes Bild auf eine gewünschte Farbe zu tönen. Dies kann ersetzen,setImageTintList()
aber nur die Verwendungandroid:tint
sollte auch funktionieren.quelle
Verwenden Sie diesen NameSpace xmlns
: app = "http://schemas.android.com/apk/res-auto"
und nachdem Sie jeden android: tint durch app: tint ersetzen können. Dies behebt das Problem für mich.
quelle
Ich bin etwas spät dran, aber hier ist, wie es geht.
quelle
Dies funktioniert wie Sie möchten und sollte auf allen Android-Versionen der Support-Bibliothek funktionieren:
quelle
Wenn jemand ein neues Zeichenobjekt erstellen möchte (tin1, tint2 ..), versuchen Sie dies
quelle