Je voudrais obtenir la taille aussi si possible.Comment obtenir la largeur de la chaîne sur Android?
Répondre
Vous pouvez utiliser la méthode getTextBounds(String text, int start, int end, Rect bounds)
d'un objet Paint. Vous pouvez soit utiliser l'objet de peinture fourni par un TextView
ou en construire un vous-même avec l'apparence de votre texte désiré.
L'utilisation d'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();
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)
En outre, si vous voulez mesurer le texte à une certaine taille de police, vous pouvez utiliser TextPaint paint = new TextPaint(); paint.setTextSize (textSize); '. 'textSize' est en pixels. –
Il y a deux mesures de largeur différentes pour un texte. L'un est le nombre de pixels qui a été dessiné dans la largeur, l'autre est le nombre de «pixels» le curseur doit être avancé après avoir dessiné le texte.
paint.measureText et paint.getTextWidths renvoie le nombre de pixels (en float) que le curseur doit être avancée après étirage de la chaîne donnée. Pour le nombre de pixels peints, utilisez paint.getTextBounds comme mentionné dans l'autre réponse. Je crois que cela s'appelle «l'avance» de la police. Pour certaines polices, ces deux mesures diffèrent (beaucoup), par exemple la police Black Chancery a des lettres qui dépassent les autres lettres (chevauchement) - voir la majuscule 'L'. Utilisez paint.getTextBounds comme mentionné dans l'autre réponse pour obtenir des pixels peints.
J'ai mesuré la largeur de cette façon:
String str ="Hiren Patel";
Paint paint = new Paint();
paint.setTextSize(20);
Typeface typeface = Typeface.createFromAsset(getAssets(), "Helvetica.ttf");
paint.setTypeface(typeface);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.FILL);
Rect result = new Rect();
paint.getTextBounds(str, 0, str.length(), result);
Log.i("Text dimensions", "Width: "+result.width());
Cela vous aidera.
@Frank: que se passe-t-il si la chaîne est une chaîne étendue? – Ashwin
Bonne réponse. A propos, le résultat sera plus précis si vous appelez 'textView.setTextSize()'. – li2