Ich habe ein Bild res/drawable/test.png
(R.drawable.test).
Ich möchte dieses Bild an eine Funktion übergeben, die Drawable
z mButton.setCompoundDrawables()
.
Wie kann ich eine Bildressource in eine konvertieren Drawable
?
Ihre Aktivität sollte die Methode getResources haben. Machen:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
Dieser Code ist veraltet:
Verwenden Sie stattdessen Folgendes:
quelle
ResourcesCompat.getDrawable(getResources(), R.drawable.icon, null);
(wobei der 3. Parameter eine optionale Themeninstanz ist).Die
getDrawable (int id)
Methode wird ab API 22 abgeschrieben.Verwenden Sie stattdessen die
getDrawable (int id, Resources.Theme theme)
for API 21+Code würde ungefähr so aussehen.
quelle
getResources().getDrawable(R.drawable.ic_warning_80dp, context?.theme)
Ich möchte nur hinzufügen, dass Sie stattdessen die folgende Methode aus der Support-Bibliothek verwenden sollten, wenn Sie bei Verwendung von getDrawable (...) eine "veraltete" Nachricht erhalten.
Sie müssen getResources () nicht verwenden, wenn Sie diese Methode verwenden.
Dies ist gleichbedeutend mit so etwas wie
Dies funktioniert sowohl vor als auch nach Lollipop.
quelle
Holen Sie sich Drawable aus der Vektorressource, unabhängig davon, ob es sich um einen Vektor handelt oder nicht:
Hinweis:
ContextCompat.getDrawable(context, R.drawable.icon);
Wirdandroid.content.res.Resources$NotFoundException
für die Vektorressource erzeugt.quelle
Wenn Sie versuchen, das Zeichenobjekt aus der Ansicht zu erhalten, in der das Bild festgelegt ist,
dann gibt das Drawable nur den Nullwert mit dem folgenden Code zurück ...
Es ist daher besser, das Bild mit dem folgenden Code festzulegen, wenn Sie das Zeichen aus einer bestimmten Ansicht abrufen möchten.
Nur dann werden wir das Drawable genau konvertieren.
quelle
Wenn Sie von einem Fragment erben, können Sie Folgendes tun:
Drawable drawable = getActivity().getDrawable(R.drawable.icon)
quelle