web-dev-qa-db-fra.com

Obtenir la taille d'un texte dans TextView

J'ai un problème pour placer une textView aux coordonnées x et y du centre spécifié. Tout d'abord, j'ai essayé de définir le texte dans textView et de déplacer la vue avec la largeur et la hauteur de la vue à partir de ce lien .

Mais ça ne marche pas, et j'aimerais essayer autre chose. Je voudrais savoir s'il existe une méthode pour obtenir la taille qu'un texte spécifié prendra dans mon textView? Je veux dire, je connais le texte et la taille du texte, comment puis-je obtenir la largeur et la hauteur de mon TextView?

Quelque chose comme la méthode (NSString)sizeWithFont; pour ceux qui connaissent l'iPhone dev.

40
Imotep

Si votre affichage de texte s'appelle TV

TV.setText("bla");
TV.measure(0, 0);       //must call measure!
TV.getMeasuredHeight(); //get height
TV.getMeasuredWidth();  //get width

Plus à ce sujet (mis à jour): Comment obtenir la largeur/hauteur d'une vue

62
Sherif elKhatib
Rect bounds = new Rect();

textView.getPaint().getTextBounds(textView.getText().toString(), 0, textView.getText().length(), bounds);

bounds.width() vous donnera la largeur exacte du texte dans la vue Texte.

79

Pour une raison quelconque, la solution de Midverse Engineer ne me donne pas toujours des résultats corrects (au moins sur certaines Android). La solution de Sherif elKhatib fonctionne, mais a pour effet secondaire de modifier la largeur et la hauteur mesurées Cela pourrait entraîner un positionnement incorrect de textView.

Ma solution:

width = textView.getPaint().measureText(text);
metrics = textView.getPaint().getFontMetrics();
height = metrics.bottom - metrics.top;
11
Marcel W