2011-12-27 4 views
0

Mon jeu de boutons est en quelque sorte déplacé vers la droite après avoir poussé et fermé un nouvel écran.Blackberry fieldManager problème 8900 vs 9550

J'ai ajouté quelques boutons à un VerticalFieldManager. Puis j'ai ajouté le verticalFieldManager sur un horizontalFieldManager pour centrer les boutons.

Le problème est sur un BB 8900 (courbe) est tout va bien. Sur un 9550 (écran tactile), il ne fonctionne que lorsque j'ouvre l'écran la première fois. Mais si j'ouvre en fonction de cet écran un autre écran et ferme l'écran ouvert, les boutons se déplacent vers la droite. Mais seulement sur le 9550 ??? Sur la courbe, je peux ouvrir un nouvel écran et fermer le nouveau et il semble qu'il devrait. Est-ce que quelqu'un connaît ce problème?

VerticalFieldManager verticalFieldMng = new VerticalFieldManager();  
      ButtonField btnSendAdrViaSMS = new ButtonField("test"); 
      verticalFieldMng2.add(btnSendAdrViaSMS); 
      ButtonField btn2 = new ButtonField("test2"); 
      verticalFieldMng2.add(btn2); 
      ButtonField btn3 = new ButtonField("test2"); 
      verticalFieldMng2.add(btn3); 

      HorizontalFieldManager horizontalFieldManager = new HorizontalFieldManager(HorizontalFieldManager.FIELD_HCENTER); 
      horizontalFieldManager.add(verticalFieldMng2); 
      add(horizontalFieldManager); 

Pour ouvrir le nouvel écran i utiliser

Screen_SendSMS sendSMS = new Screen_SendSMS("",link); 
UiApplication.getUiApplication().pushModalScreen(sendSMS); 

Et pour fermer l'écran j'utiliser la touche « retour » régulière du dispositif BB sans qu'il écrasant.

+0

Prenez le bouton en hfm et ajoutez-le au HFM. – BBdev

+0

a mis à jour ma réponse –

Répondre

1

C'est assez étrange, mais ne me surprend pas dans BB. MISE À JOUR: Après avoir passé en revue une partie de mon code pour centrer les choses, je peux dire que HorizontalFieldManager, en raison du défilement je suppose, a des problèmes pour centrer les champs. Donc, quand j'ai besoin de centrer horizontalement, j'utilise un VerticalFieldManager, et quand je dois centrer verticalement, j'utilise un HorizontalFieldManager.

Le modèle de base au centre des champs est la suivante:

VerticalFieldManager vfm = new VerticalFieldManager(Manager.USE_ALL_WIDTH); 
    Field toCenter = new <Field>(DrawStyle.HCENTER | Field.FIELD_HCENTER); 
    vfm.add(toCenter); 

à la verticale, ce serait:

HorizontalFieldManager hfm = new HorizontalFieldManager(Manager.USE_ALL_HEIGHT); 
    Field toCenter = new <Field>(DrawStyle.VCENTER | Field.FIELD_VCENTER); 
    hfm.add(toCenter); 

Vous pouvez combiner les drapeaux avec d'autres drapeau de style avec l'arithmétique opérateur OR.

Dans votre cas, vous devrez le faire deux fois: d'abord avec les boutons et le vfm, ensuite avec le vfm et le hfm.

+0

génial! Fonctionne parfaitement! – Martin

+0

Avez-vous un exemple pour le gestionnaire de grille? J'ai suivi Manager GridFieldManager headGridMng = nouveau GridFieldManager (1, 4, GridFieldManager.USE_ALL_HEIGHT | Manager.USE_ALL_WIDTH | GridFieldManager.FIXED_SIZE); En combinaison avec "headGridMng.setColumnProperty (XX, GridFieldManager.FIXED_SIZE, XXX);" et headGridMng.add (nouveau LabelField ("", DrawStyle.LEFT | Field.FIELD_LEFT)); – Martin