116 votes

Comment obtenir la largeur de chaîne sur Android?

J'aimerais aussi avoir de la hauteur si possible.

219voto

Frank Points 1756

Vous pouvez utiliser la méthode getTextBounds (String text, int start, int end, Rect bounds) d'un objet Paint. Vous pouvez utiliser l’objet paint fourni par un objet TextView ou en créer un vous-même avec l’apparence souhaitée.

En utilisant un TextView, vous pouvez effectuer les opérations suivantes:

 Rect bounds = new Rect();
Paint textPaint = textView.getPaint();
textPaint.getTextBounds(text,0,text.length(),bounds);
int height = bounds.height();
int width = bounds.width();
 

91voto

SharkAlley Points 2239

Si vous avez juste besoin de la largeur, vous pouvez utiliser:

 float width = paint.measureText(string);
 

http://developer.android.com/reference/android/graphics/Paint.html#measureText(java.lang.String )

21voto

arberg Points 1370

Il existe deux types de largeur de mesures en faveur d'un texte. L'un est le nombre de pixels qui a été établi dans la largeur, l'autre est le nombre de "pixels" le curseur doit être avancé après l'élaboration de ce texte.

de la peinture.savoir measuretext et de la peinture.getTextWidths retourne le nombre de pixels (en float) qui le curseur doit être avancé après l'élaboration de la chaîne. Pour le nombre de pixels peint utilisez de la peinture.getTextBounds comme mentionné dans d'autres réponses. Je crois que c'est la "Avance" de la police.

Pour certaines polices de ces deux mesures diffèrent (beaucoup), par exemple la police Black Chancery ont des lettres qui dépassent les autres lettres (chevauchement) - voir la capitale de L'. Utilisez de la peinture.getTextBounds comme mentionné dans d'autres réponse pour obtenir pixels peint.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X