2010-07-06 3 views
18

J'ai fait une bonne recherche sur ceci ici et ne peux pas trouver une solution.Comment puis-je définir une largeur minimale (en caractères) pour un TextView?

J'ai un TextView dans un RelativeLayout qui contient un nombre entier. Le nombre se situera entre 1 et 99 - quelqu'un peut-il me dire comment taille le TextView de sorte que sa largeur est toujours la largeur de la chaîne "99" même si elle ne contient que "1"?

J'ai besoin de cela parce que les positions des composants à la droite de cette TextView dépend de sa largeur, donc tous sont la position en fonction du nombre de chiffres que le TextView contient.

Cela ne me dérange pas si cela est fait en XML ou en code - je veux juste éviter d'avoir pour définir la largeur d'un TextView en pixels!

Merci pour toutes les solutions possibles; S'il vous plaît demander si j'ai manqué informations importantes!

Répondre

46

essayez ceci:

android:layout_width="wrap_content" 
android:minEms="2" 
+0

Merci, ça ressemble à un bon 'un! –

+0

Cela fonctionne comme par magie. –

+1

vous pouvez également ajouter android: gravity = "center" – Shyri

-2

utilisation android: maxLength attribut de TextView.Please lire this

+0

Salut, merci pour votre réponse, mais c'est une longueur minimum dont j'avais vraiment besoin. :-) –

0

Je pense que vous êtes à la recherche de la méthode getTextBounds() dans la classe de peinture. Je ne l'ai pas essayé moi-même.

16

Ems fonctionne si votre police est à espacement fixe. Pour les polices proportionnelles, vous voulez la largeur de deux '0, pas deux' m. Vous pouvez revenir à TextPaint.measureText comme suit:

float measureText = zip.getPaint().measureText("00000"); 
zip.setWidth(zip.getPaddingLeft() + zip.getPaddingRight() + (int) measureText); 
+0

Fonctionne comme par magie! Merci beaucoup de partager cet extrait de code. :) –

+1

Réglage ems n'a pas fonctionné pour moi, mais cela a fait. Merci pforhan :) – jayanth

Questions connexes