Ziehbare Tönung für api <21

Ist es möglich, ziehbare Tönungsarbeiten für api <21 zu machen?

<bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/ic_calendar" android:tint="@color/primary" /> 

Funktioniert ganz gut aber nur für Geräte mit API21. Jeder Workaround für niedrigere api-Geräte oder AppCompat-Unterstützung? Kann nichts finden

  • Android - Umgang mit einem Dialog auf Bildschirm Orientierung ändern
  • Android Content Provider Datenbank Leck Problem
  • Html.fromHtml () ist veraltet, was ist die Alternative?
  • Layout Animation Android
  • Android: Das Kontaktbuch des Benutzers erweitern. Performance ContentProvider vs Sqlite vs Liste im Speicher
  • Unterschiedliche Höhe für jedes Element in GridView
  • Wie bekomme ich extra Parameter aus der dynamischen Verknüpfung mit Firebase?
  • Wie man DownloadManager in ArrayAdapter verwendet
  • Android: Benachrichtigung von BroadcastReceiver
  • Google Wallet-Händlerkonto ohne Unternehmen einrichten
  • Chrome benutzerdefinierte Tabs und Intent-Filter
  • Wie bekomme ich CPU-Temperatur in Android
  • 6 Solutions collect form web for “Ziehbare Tönung für api <21”

    Nutzen Sie das AppCompatImageView so:

     <android.support.v7.widget.AppCompatImageView android:id="@+id/my_appcompat_imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/my_image" android:tint="#636363" /> 

    Vergewissern Sie sich, dass Sie das neueste appcompat-v7 in der App deiner App build.gradle .

    Beispiel: compile 'com.android.support:appcompat-v7:25.0.0' in deiner App's build.gradle .

    Eine ähnliche Frage wurde hier vorher gefragt: https://stackoverflow.com/a/26533340/950427

    Android Drawable Tinting wird nur in Android 5.0+ (nur API 21+) unterstützt. (Es heißt " At the moment this is limited to coloring the action bar and some widgets. ").

    Theming

    Wenn Sie diese Attribute festlegen, propagiert AppCompat automatisch ihre Werte in die Framework-Attribute auf API 21+. Dies färbt automatisch die Statusleiste und Übersicht (Recents) Taskeintrag.

    Auf älteren Plattformen emuliert AppCompat die Farbthemen, wo es möglich ist. Im Moment ist dies auf die Färbung der Aktionsleiste und einige Widgets beschränkt.

    Und

    Widget Tönung

    Wenn Sie auf Geräten mit Android 5.0 laufen, werden alle Widgets mit den Farbthemenattributen getönt, über die wir gerade gesprochen haben. Es gibt zwei Hauptmerkmale, die dies auf Lollipop erlauben: Ziehbare Tönung und Referenzieren von Themenattributen (des Formulars attr / foo) in Zeichenkörben.

    AppCompat bietet ähnliche Verhalten auf früheren Versionen von Android für eine Teilmenge von UI-Widgets:

    Alles, was von der AppCompat-Toolbar (Action-Modi, etc.) bereitgestellt wird. EditText Spinner CheckBox RadioButton Switch (verwenden Sie die neue android.support.v7.widget.SwitchCompat) CheckedTextView Sie müssen nichts Besonderes tun, um diese Arbeit zu machen, verwenden Sie einfach diese Steuerelemente in Ihre Layouts wie üblich und AppCompat wird den Rest erledigen (mit einigen Einschränkungen, siehe FAQ unten).

    Quellen:

    http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

    https://chris.banes.me/2014/10/17/appcompat-v21/

    Könnten Sie nicht einfach ein ImageView verwenden, um Ihr Drawable anzuzeigen? android:tint funktioniert gut auf älteren API Levels.

     <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_calendar" android:tint="@color/primary" /> 

    Jetzt AppCompatImageView, AppCompatButton ersetzt die ImageView, Button, um Tönung auf Geräten mit niedrigerer API zu unterstützen. Überprüfen Sie den Link für weitere Details AppCompatImageView , AppCompatButton

    Sie können das mit Quellcode erreichen. Bisher wurde DrawableCompat nicht von DrawableCompat . Ausgehend von der Supportbibliothek 22.1 kannst du das machen, aber du brauchst es auf diese Weise:

     Drawable normalDrawable = getResources().getDrawable(R.drawable.drawable_to_tint); Drawable wrapDrawable = DrawableCompat.wrap(normalDrawable); DrawableCompat.setTint(wrapDrawable, getResources().getColor(R.color.colorPrimaryLight)); 

    Zum Tönen von Bildern kannst du imageView.setColorFilter(int color) . Dies funktioniert von API 8 und arbeitete für das Tönen meines schwarzen Bildes zu einer Farbe, die ich wollte. Dies kann setImageTintList() ersetzen, aber nur mit android:tint sollte auch funktionieren.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.