Wie erhalten Sie ein Drawable-Objekt von einer Ressourcen-ID im Android-Paket?
Lesezeit: 3 Minuten
Blaskovicz
Ich muss ein Drawable-Objekt erhalten, das auf einer Bildschaltfläche angezeigt wird. Gibt es eine Möglichkeit, den folgenden Code (oder etwas Ähnliches) zu verwenden, um ein Objekt aus dem android.R.drawable.*-Paket zu erhalten?
zum Beispiel, wenn drawableId android.R.drawable.ic_delete war
mContext.getResources().getDrawable(drawableId)
Peter Houston
Drawable d = getResources().getDrawable(android.R.drawable.ic_dialog_email);
ImageView image = (ImageView)findViewById(R.id.image);
image.setImageDrawable(d);
Ich habe auch festgestellt, dass die Verwendung des Anwendungskontexts zu funktionieren scheint, danke.
– Blaskovicz
19. Oktober 2011 um 2:21 Uhr
Ab API 22. getDrawable(int id) ist veraltet. Verwenden getDrawable(int id, Resources.Theme theme) stattdessen. Die Methode getTheme() sollte hilfreich sein.
– Isaac Zais
17. April 2015 um 18:07 Uhr
Ich habe einen kleinen Zweifel. In diesem Code “Die Methode getDrawable (int) vom Typ Resources ist veraltet”. Laut einer SO-Antwort 1. Ist es falsch, veraltete Methoden oder Klassen in Java zu verwenden? Aus der Definition von veraltet: “Ein Programmelement mit der Anmerkung @Deprecated ist eines, von dessen Verwendung Programmierer abgeraten werden, typischerweise weil es gefährlich ist oder weil es eine bessere Alternative gibt.” Was ist eine bessere Alternative dafür.
– Shubham Agarwal
5. August 2015 um 13:42 Uhr
Muhammad Soliman
Ab API21sollten Sie die verwenden getDrawable(int, Theme) Methode statt getDrawable(int)da Sie damit a abrufen können drawable Objekt, das einem bestimmten zugeordnet ist resource ID für das Gegebene screen density/theme. Aufruf der deprecatedgetDrawable(int) Methode ist äquivalent zum Aufrufen getDrawable(int, null).
Sie sollten stattdessen den folgenden Code aus der Support-Bibliothek verwenden:
– Sie sollten eine gemeinsame Klasse erstellen, um Zeichenfähigkeit und Farben zu erhalten, denn wenn Sie in Zukunft eine Verwerfung haben, müssen Sie nicht überall in Ihrem Projekt Änderungen vornehmen. Sie ändern einfach diese Methode