Existe-t-il une méthode qui renvoie la largeur (en pixels) d'un texte à dessiner sur un canevas Android en utilisant la méthode drawText () en fonction du Paint utilisé pour le dessiner?
android
text
android-canvas
draw
NioX5199
la source
la source
la source
Réponse complémentaire
Il existe une légère différence entre la largeur renvoyée par
Paint.measureText
etPaint.getTextBounds
.measureText
renvoie une largeur qui inclut la valeur advanceX du glyphe remplissant le début et la fin de la chaîne. LaRect
largeur renvoyée pargetTextBounds
n'a pas ce remplissage car les limites sont cellesRect
qui enveloppent étroitement le texte.la source
la source
Il existe en fait trois façons différentes de mesurer le texte.
GetTextBounds:
MeasureTextWidth:
Et getTextWidths:
Notez que getTextWidths peut être utile si vous essayez de déterminer quand placer le texte à la ligne suivante.
MesureTextWidth et getTextWidth sont égaux et ont la largeur avancée qui mesure que d'autres ont publiée. Certains considèrent cet espace excessif. Cependant, cela est très subjectif et dépend de la police.
Par exemple, la largeur des limites du texte de mesure peut en fait paraître trop petite:
Cependant, lors de l'ajout d'un texte supplémentaire, les limites d'une lettre semblent normales:
Images extraites du Guide des développeurs Android pour le dessin de toile personnalisé
la source
Eh bien, j'ai fait de manière différente:
J'espère que ceci vous aidera.
la source
J'ai utilisé les méthodes measureText () et getTextPath () + computeBounds () et j'ai construit un Excel avec tous les attributs de texte pour une police de taille fixe que l'on peut trouver sous https://github.com/ArminJo/android-blue-display/blob /master/TextWidth.xlsx . Vous y trouverez également des formules simples pour d'autres attributs de texte tels que monter, etc.
L' application ainsi que la fonction drawFontTest () pour générer les valeurs brutes utilisées dans Excel sont également disponibles dans ce référentiel.
la source
vous pouvez utiliser "textPaint.getTextSize ()" pour obtenir la largeur du texte
la source