J'ai le TextView
suivant:
<TextView
Android:drawableLeft="@drawable/loading"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Updating Rates" />
Et le résultat est le suivant:
Comment puis-je rendre le cercle de chargement dessinable contraint proportionnellement pour que sa hauteur corresponde à la hauteur du texte?
Aussi, si possible, je voudrais ajouter un peu d'espacement entre le texte et l'image.
Pour réduire la loading
, il suffit de réduire la taille des images.
Ou utilisez RelativeLayout
et placez le chargement dans un ImageView
et mettez-le à l'échelle.
Ou vous pouvez ajouter un remplissage entre les tirables et le texte en utilisant Android:drawablePadding
(ou setCompoundDrawablePadding()
):
Android:drawablePadding="3dp"
Je pense avoir trouvé la solution, mais un peu tard
Drawable drawable = getResources().getDrawable(R.drawable.s_vit);
drawable.setBounds(0, 0, (int)(drawable.getIntrinsicWidth()*0.5),(int)(drawable.getIntrinsicHeight()*0.5));
ScaleDrawable sd = new ScaleDrawable(drawable, 0, scaleWidth, scaleHeight);
Button btn = findViewbyId(R.id.yourbtnID);
btn.setCompoundDrawables(sd.getDrawable(), null, null, null);
La solution de Ravi a fonctionné pour moi, mais sur certains appareils, l'étirable disparaissait. Correction de cela en supprimant la mise à l'échelle.
int bound = (int) (drawable.getIntrinsicWidth() * 0.5);
drawable.setBounds(0, 0, bound, bound);
b.setCompoundDrawables(drawable, null, null, null);
Une meilleure solution consistera à créer un XML dans un dossier dessinable et à ajouter l'image à ce XML, et à maintenir scaleType comme "fitXY". Vous pouvez maintenant créer ce XML en tant que drawableLeft.