2010-04-26 5 views
1

J'ai essayé de modifier un champ de texte riche pour afficher correctement dans sa moitié du champ horizontal. L'objectif est le suivant:Comment utiliser WordTextField pour Blackberry

--------------------------- 
| address is | ***********| 
| very long | ** IMAGE **| 
| state, zip | ***********| 
--------------------------- 

Où adresse est une seule chaîne séparée de la ville et zip. Je modifier le champ d'adresse comme celui-ci:

RichTextField addrField = new RichTextField(address) { 
    public int getPreferredWidth() { 
    return 200; 
    } 

    protected void layout(int maxWidth,int maxHeight) { 
    super.layout(getPreferredWidth(),maxHeight); 
    setExtent(getPreferredWidth(), getHeight()); 
    } 
}; 

Les résultats ressemblent à ceci:

----------------------------- 
| address is ve| ***********| 
| state, zip | ** IMAGE **| 
|    | ***********| 
----------------------------- 

où clairement l'adresse va juste sous l'image. Les deux champs horizontaux sont statiques de 200 pixels de large. Ce n'est pas comme si le système ne savait pas où placer l'adresse. Cependant, j'ai entendu dire que ce n'est pas facile à faire et que cela n'est pas fait automatiquement.

Je n'ai pas réussi à trouver une réponse directe en ligne. J'ai trouvé des gens disant que vous devez le faire dans un gestionnaire de disposition personnalisé, certains se réfèrent à l'API RichTextField, ce qui ne sert à rien. Mais personne ne mentionne réellement comment le faire. Je comprends que je pourrais avoir besoin de lire caractère par caractère et de définir où les sauts de ligne devraient se produire. Ce que je ne sais pas, c'est comment exactement faire ça. Vous ne pouvez pas simplement compter les caractères et supposer que chacun vaut 5 pixels, et vous ne devriez pas avoir à le faire. Il doit sûrement y avoir un moyen d'y parvenir d'une manière logique.

Des suggestions?

+0

voir aussi http://stackoverflow.com/questions/8995693/wrap-autocompletefield-list-item –

Répondre

0

Je n'ai pas de solution exacte à votre problème mais en termes de mesure de la largeur du texte, si vous avez une référence à l'objet Font pour la police utilisée dans votre domaine, vous pouvez appeler Font.getAdvance() pour obtenir le largeur du texte spécifié en pixels. Cela peut être utile si vous devez insérer des ruptures manuelles dans votre texte.

Questions connexes