2016-06-22 3 views
0

J'utilise la police Android Monospace pour mon jeu et j'ai constaté que la police ne se comporte pas comme prévu. Le jeu repose sur les caractères supérieurs et les underscores ci-dessous étant alignés les uns avec les autres comme des indices pour résoudre le cryptogramme. Cependant, lorsque le mot est très proche du bord du TextView, comme on peut le voir sur la 5ème ligne montrée dans l'image, la ligne bleue du texte passe à la ligne suivante, ce qui fait que les indices et les réponses sont désynchronisés. J'utilise TextView.setTypeface(Typeface.MONOSPACE) pour les deux lignes (bien ... une police très étroitement basée sur elle - le problème survient aussi avec MONOSPACE).Les polices monospace Android sont-elles réellement de taille fixe?

Des idées ce qui pourrait être à l'origine de ce problème et comment y remédier?

enter image description here

+0

Ils doivent tous avoir la même largeur mais il semble que le trait de soulignement soit traité spécialement, essayez une police différente. Voir aussi si la lettre "W" a le même problème, la mise en page peut être à la recherche d'espace blanc. – zaph

+0

J'ai vérifié le problème des espaces blancs - même problème que sur la photo. J'essaierai une police différente ... –

+0

Probablement en faisant le TextView un pixel (point) plus petit ou plus gros devrait résoudre le problème dans ce cas. – zaph

Répondre

0

Il se trouve que l'algorithme pour l'habillage du texte TextView n'est pas aussi simple que - ce que le mot suivant en forme sur cette ligne -> sinon le mettre sur la ligne suivante.

Plus tard dans cette capture d'écran, les textes en noir et bleu diffèrent (l'un montre l'auteur de la citation, l'autre pas). Il semble que le TextView essaie de minimiser les lignes et après que cela a été accompli, il minimise la largeur. Étant donné que les deux textes de la capture d'écran sont ~ 1 ligne de texte différente, les petits mots à la fin peuvent être réarrangés pour réduire la largeur de TextView. C'est ce qui provoque les problèmes - la police est (pour autant que je sache) en fait parfaitement monospace.

Cette solution correcte à ce problème je suppose est d'étendre TextView et faire un onDraw() personnalisé pour faire face au problème. Pour moi, il suffisait que les deux textes montrent exactement les mêmes mots (mais avec l'un étant passé par un chiffre de substitution).