web-dev-qa-db-fra.com

L'appel de setCompoundDrawables () n'affiche pas le composé à dessiner.

Après avoir appelé la méthode setCompoundDrawables , le composé Drawable n'est pas affiché.

Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);

Des pensées?

300
hunterp
591
hunterp

Utilisez ceci (j'ai testé). Ça marche bien

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 );
63
aryan bahmani

L'image est vide car elle n'a pas de limites spécifiées. Vous pouvez utiliser setCompoundDrawables() mais avant de spécifier les limites de l'image, utilisez la méthode Drawable.setBounds().

46
teoREtik

Exemple réglé au sommet:

view.setCompoundDrawablesWithIntrinsicBounds(
    null,
    getResources().getDrawable(R.drawable.some_img),
    null,
    null
);

ordre des arguments: (gauche, haut, droite, bas)

35
Andrey

Un peu plus simple encore:

Drawable image = context.getResources().getDrawable(R.drawable.ic_action );
image.setBounds( 0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight() );
button.setCompoundDrawables( image, null, null, null );
22
Alecs

Il est déconseillé dans l'API 22.

Ce code est utile pour moi:

Drawable drawable = ResourcesCompat.getDrawable(getResources(),R.drawable.wen, null);
drawable.setBounds(0, 0, drawable.getMinimumWidth(),
drawable.getMinimumHeight());
tv.setCompoundDrawables(drawable, null, null, null);
10
許維德

À Kotlin:

1) Définissez 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éfinissez TextView:

textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)

ou

button.setCompoundDrawables(null, drawable, null, null)
2
CoolMind
2
Bharat Dodeja

Exemple avec Kotlin:

    val myView = layoutInflater.inflate(R.layout.my_view, null) as TextView
    myView.setCompoundDrawablesWithIntrinsicBounds(0, myDrawable, 0, 0)
1
mike.tihonchik