Ajustement ImageSpan à TextView hauteur de la ligne
J'ai besoin de mettre des icônes à l'intérieur de mon textview, mais elles ne correspondent pas à la hauteur de la ligne (voir les flèches):
J'ai essayé ceci:
spannable.setSpan(new ImageSpan(context, entry.getValue(), ImageSpan.ALIGN_BOTTOM), Matcher.start(), matcher.end(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
t.setText(spannable, BufferType.SPANNABLE);
et ce:
Drawable myIcon = c.getResources().getDrawable(R.drawable.myicon);
myIcon.setBounds(0, 0, myIcon.getIntrinsicWidth(), myIcon.getIntrinsicHeight());
spannable.setSpan(new ImageSpan(myIcon, ImageSpan.ALIGN_BASELINE), matcher.start(), matcher.end(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
t.setText(spannable, BufferType.SPANNABLE);
et dans les deux cas, j'ai eu le même résultat.
Je garde l'icône dans /res/drawable dossier, et sa taille est de 75x75px.
J'ai essayé de baisser la résolution de l'image, mais ils ont l'air flou
- essayez myIcon.setBounds(0, 0, 50, 20) ou quelque chose, à 20 doit être vraiment à la hauteur de la ligne
Vous devez vous connecter pour publier un commentaire.
Vous devez définir l'image de limites à la TextView la hauteur de la ligne. Par exemple:
Bien sûr, cela suppose que vous voulez une image carrée. Si pas de place, alors vous aurez besoin de déterminer manuellement ce que la valeur de la largeur doit être en fonction de la hauteur de la ligne.
Pour atteindre la hauteur correcte inclus dans textview un drawable vous devez définir des limites appropriées. Mais tout d'abord, nous devons calculer correctement. En particulier sa hauteur.
Après quelques expériences, j'ai réalisé que
FontMetricsInt
champ dePaint
classe peut être utile.Donc, du haut de notre image est aligné à l'aide de
ascent
valeur deFontMetricsInt
et le bas - avecbottom
valeur.