Après avoir appelé le setCompoundDrawables
méthode, le composé Drawable n'est pas montré
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
Des idées ?
Après avoir appelé le setCompoundDrawables
méthode, le composé Drawable n'est pas montré
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
Des idées ?
L'image n'est pas affichée car vous n'avez pas spécifié les limites, vous avez donc 2 options ici.
1ère méthode
Utilisez setCompoundDrawablesWithIntrinsicBounds
comme indiqué ci-dessous
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn. setCompoundDrawablesWithIntrinsicBounds(myDrawable, null, null, null);
2ème méthode
Vous pouvez appliquer des limites au drawable avant de les appliquer au TextView, comme indiqué ci-dessous
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
myDrawable.setBounds( 0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight());
btn.setCompoundDrawables(myDrawable, null, null, null);
C'est tout.
En Kotlin :
1) Définir drawable
:
val drawable = ContextCompat.getDrawable(context!!,R.drawable.ic_image)?.apply {
setBounds(0, 0, intrinsicWidth, intrinsicHeight)
}
ou
val drawable = ResourcesCompat.getDrawable(resources, R.drawable.ic_image, null)?.apply {
setBounds(0, 0, minimumWidth, minimumHeight)
}
2) Définir TextView
:
textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
ou
button.setCompoundDrawables(null, drawable, null, null)
Pour moi setCompoundDrawablesWithIntrinsicBounds(Drawable, Drawable, Drawable, Drawable) n'a pas fonctionné.
J'ai dû utiliser setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0) .
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
12 votes
Comme indiqué dans les réponses ci-dessous, la variante de la méthode nommée
(..)WithIntrinsicBounds
doit être appelé. A propos,padding
pour le Drawable composé doit être défini après cet appel pour provoquer un effet8 votes
Le site documento dit : Les Drawables doivent déjà avoir
setBounds(Rect)
appelé.0 votes
Bonjour Hunterp, je viens de vous rencontrer au café (Angel), maintenant que je sais que vous savez ce que sont les Drawables d'Android (et que vous avez peut-être rencontré des erreurs de mémoire en travaillant avec beaucoup d'entre eux), je peux vous parler de certains des projets auxquels j'ai collaboré pour traiter ce problème. github.com/JakeWharton/DiskLruCache (que j'ai collaboré à rendre plus convivial pour Android) qui est utilisé par Picasso ( github.com/square/picasso )
1 votes
@Dr1Ku En fait, je l'ai déjà fait et ça marche quand même.