2011-01-16 6 views
0

Je veux placer chaque caractère sur une nouvelle ligne. J'utilise xml suivant.Textview placer chaque caractère sur la nouvelle ligne

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView 
    android:layout_width="12dip" 
    android:layout_marginLeft="12dip" 
    android:textSize="12dip" 
    android:layout_height="fill_parent" 
    android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/> 
</LinearLayout> 

mais je reçois la sortie comme suit (sur une ligne 2 caractère sont à venir)

alt text.

Je sais que je peux utiliser \n mais n'importe qui a une meilleure option.

Répondre

1

est ici une sorte de hack qui va travailler:

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:ems="1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:typeface="monospace" 
    android:gravity="center_horizontal" 
    android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
    android:textColor="@android:color/white" 
    /> 

Cela repose sur la police de caractères à espacement fixe, où tous les personnages ont la même largeur.

+0

à quoi sert la propriété 'ems'? En utilisant votre réponse, j'obtiens 2 lignes dans chaque rangée. Mais j'ai utilisé monospace dans ma mise en page ça marche bien dans mon xml. – Vivek

+0

Hmm, pour moi cela fonctionne bien. "ems" fait exactement un em large, qui est la largeur du plus grand caractère de la police (M). Donc, avec monospace, il devrait être la largeur de 1 caractère. – kcoppock

+0

Si je mets de l'espace entre chaque personnage, il travaille avec votre layou pour moi. – Vivek

0

La raison pour laquelle vous obtenez 2 caractères sur chaque ligne est due à la largeur statique de la vue. Je ne voudrais vraiment pas aborder ce problème avec une seule vue avec une largeur statique.

Il y a beaucoup de solutions à cela, mais sur la base de l'information que vous avez donnée, je créerais probablement une seule disposition de textview comme vous avez fait et gonfler dynamiquement un tableau de textviews par le code. AKA Chaque caractère de votre chaîne est assigné à sa propre vue.

+0

Voir je peux réaliser cela en utilisant plusieurs textview. mais pour cela j'ai besoin de 26 mise en page si vous voyez ma question. Je faisais ça auparavant. http://stackoverflow.com/questions/4698382/applying-style-to-particular-character-in-textview – Vivek

+0

Non, vous avez mal compris. Une mise en page Vous _flatez-le 26 fois via le code. Ce qui dans un tableau ne va être que quelques lignes de code. – user432209

+0

@ user432209: Encore beaucoup d'inflation inutile, juste ajouter «\ n» serait beaucoup plus efficace, ou si monospace est correct, ma réponse ci-dessus. – kcoppock

Questions connexes