Wie in den Antworten unten angegeben, ist die Variante des genannten Verfahrens (..)WithIntrinsicBounds muss angerufen werden. Als Randnotiz, padding für das Compound Drawable gesetzt werden nach dieser Aufruf, um eine Wirkung zu erzielen
Hi Hunterp, habe dich gerade im Café (Angel) getroffen, jetzt, da ich weiß, dass du weißt, was Android Drawables sind (und vielleicht hast du bei der Arbeit mit vielen von ihnen Fehler aufgrund von Speicherfehlern getroffen), kann ich dir etwas über einige davon erzählen Die Projekte, an denen ich mitgearbeitet habe, mussten sich mit diesem Problem befassen github.com/JakeWharton/DiskLruCache (mit dem ich zusammengearbeitet habe, um Android-freundlicher zu machen), das von Picasso verwendet wird (github.com/square/picasso)
– Gubatron
7. August 2013 um 19:33 Uhr
@Dr1Ku Eigentlich habe ich es schon mal und es funktioniert trotzdem.
– Sotti
6. März 2014 um 22:21 Uhr
Siehe diesen Link stackoverflow.com/a/71966649/12272687
benötigt api 17, also könnte Drawable.setBounds() besser sein
– Benutzer1324936
1. Januar 2014 um 15:25 Uhr
vielen Dank .. das funktioniert bei mir .. darf ich wissen, was der Unterschied zwischen diesen beiden ist?
– Arundas KV
6. Juni 2014 um 7:13 Uhr
@user1324936 Die ‘relative’ Version erfordert API 17, andere können mit früheren Versionen verwendet werden
– Milosmen
26. März 2015 um 14:47 Uhr
@ user1324936 setCompoundDrawablesWithIntrinsicBounds wurde hinzugefügt API-Level 3
– Greg Ennis
1. April 2015 um 21:47 Uhr
SetcCompoundDrawable ducommentation: Legt fest, dass Drawables (falls vorhanden) links, über, rechts und unter dem Text angezeigt werden. Verwenden Sie null, wenn Sie dort kein Drawable haben möchten. Die Drawables müssen bereits setBounds(Rect) aufgerufen haben. setBounds() wird auf Ihren drawables nicht aufgerufen.
– Mahendra Chhimwal
8. August 2017 um 10:52 Uhr
arische Bahmani
Verwenden Sie dies (ich habe es getestet). Es funktioniert gut
Drawable image = context.getResources().getDrawable( R.drawable.ic_action );
int h = image.getIntrinsicHeight();
int w = image.getIntrinsicWidth();
image.setBounds( 0, 0, w, h );
button.setCompoundDrawables( image, null, null, null );
Dies ist nützlich, wenn auf APIs unter 17 abgezielt wird, da EditText#setCompoundDrawablesWithIntrinsicBounds erfordert mindestens API 17.
– Krøllebølle
21. Februar 2016 um 12:49 Uhr
Kannst du dafür eine Quelle angeben? Alle Unterlagen, die ich gesehen habe, weisen darauf hin, dass dies der Fall war verfügbar seit API 1.
– Kurifu
18. Oktober 2016 um 22:58 Uhr
Das Bild ist leer, weil es keine festgelegten Grenzen hat. Sie dürfen verwenden setCompoundDrawables() aber bevor Sie die Grenzen des Bildes angeben sollten, verwenden Sie Drawable.setBounds() Methode
Beste Antwort, weil Sie tatsächlich begründen, warum setBounds wichtig ist.
– Andy
10. Dezember 2017 um 16:05 Uhr
@Andy Genau, hasse diese Top-Antworten mit 800 Stimmen, die einfach eine Codezeile ohne Worte kopieren und einfügen
Wie in den Antworten unten angegeben, ist die Variante des genannten Verfahrens
(..)WithIntrinsicBounds
muss angerufen werden. Als Randnotiz,padding
für das Compound Drawable gesetzt werden nach dieser Aufruf, um eine Wirkung zu erzielen– Dr1Ku
27. Juni 2012 um 16:17 Uhr
Das dokumentieren sagt: Die Drawables muss man schon gehabt haben
setBounds(Rect)
genannt.– Benutzer1521536
15. Dezember 2012 um 10:44 Uhr
Hi Hunterp, habe dich gerade im Café (Angel) getroffen, jetzt, da ich weiß, dass du weißt, was Android Drawables sind (und vielleicht hast du bei der Arbeit mit vielen von ihnen Fehler aufgrund von Speicherfehlern getroffen), kann ich dir etwas über einige davon erzählen Die Projekte, an denen ich mitgearbeitet habe, mussten sich mit diesem Problem befassen github.com/JakeWharton/DiskLruCache (mit dem ich zusammengearbeitet habe, um Android-freundlicher zu machen), das von Picasso verwendet wird (github.com/square/picasso)
– Gubatron
7. August 2013 um 19:33 Uhr
@Dr1Ku Eigentlich habe ich es schon mal und es funktioniert trotzdem.
– Sotti
6. März 2014 um 22:21 Uhr
Siehe diesen Link stackoverflow.com/a/71966649/12272687
– Mori
22. April um 9:43 Uhr