Ceci est en partie basé sur ce qui suit réponse antérieure ci-dessus par @A Boschman . Dans cette solution, j'ai constaté que la taille de l'image en entrée affectait grandement la capacité de makeImageSpan()
pour centrer correctement l'image. En outre, j'ai constaté que la solution affectait l'espacement du texte en créant des interlignes inutiles.
J'ai trouvé BaseImageSpan (de la bibliothèque Fresco de Facebook) pour faire le travail particulièrement bien :
/**
* Create an ImageSpan for the given icon drawable. This also sets the image size. Works best
* with a square icon because of the sizing
*
* @param context The Android Context.
* @param drawableResId A drawable resource Id.
* @param size The desired size (i.e. width and height) of the image icon in pixels.
* Use the lineHeight of the TextView to make the image inline with the
* surrounding text.
* @return An ImageSpan, aligned with the bottom of the text.
*/
private static BetterImageSpan makeImageSpan(Context context, int drawableResId, int size) {
final Drawable drawable = context.getResources().getDrawable(drawableResId);
drawable.mutate();
drawable.setBounds(0, 0, size, size);
return new BetterImageSpan(drawable, BetterImageSpan.ALIGN_CENTER);
}
Puis fournissez votre instance de betterImageSpan à spannable.setSpan()
comme d'habitude