L'appel de setCompoundDrawables () n'affiche pas le tirable composé
après que j'ai appelé la méthode setCompoundDrawables
, le dessin composé N'est pas montré..
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
une idée?
8 réponses
j'avais besoin d'utiliser setCompoundDrawablesWithIntrinsicBounds
.
utilisez ceci (j'ai testé). Il fonctionne 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 );
est vierge parce qu'elle n'a pas de limites spécifiées. Vous pouvez utiliser setCompoundDrawables()
mais avant de spécifier les limites de l'image, en utilisant Drawable.setBounds()
méthode
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 );
exemple placé en haut:
view.setCompoundDrawablesWithIntrinsicBounds(
null, getResources().getDrawable(R.drawable.some_img), null, null);
arguments d'ordre: (gauche, haut, droite, bas)
il est déprécié dans API 22.
ce code m'est utile:
Drawable drawable = ResourcesCompat.getDrawable(getResources(),R.drawable.wen, null);
drawable.setBounds(0, 0, drawable.getMinimumWidth(),
drawable.getMinimumHeight());
tv.setCompoundDrawables(drawable, null, null, null);
Pour moi setCompoundDrawablesWithIntrinsicbounds(Dessiné, Dessiné, Dessiné, Dessiné) n'a pas de travail.
j'ai dû utiliser setCompoundDrawablesWithIntrinsicbounds(0, 0, 0, 0) .
exemple avec Kotlin:
val myView = layoutInflater.inflate(R.layout.my_view, null) as TextView
myView.setCompoundDrawablesWithIntrinsicBounds(0, myDrawable, 0, 0)