2010-11-15 7 views
3

Horizontalement, je souhaite afficher deux images bitmap et entre elles afficher un champ d'étiquette. Le code semble simple, mais tous les champs sont ajoutés sur le côté gauche de l'écran.Alignement BlackBerry HorizontalFieldManager

HorizontalFieldManager hfm = new HorizontalFieldManager(); 

callbmp = new BitmapField(ei.getBitmap(),Field.FOCUSABLE |BitmapField.FIELD_LEFT); 
LabelField NAME = new LabelField("mylable", LabelField.FIELD_HCENTER); 
mailbmp = new BitmapField(mail.getBitmap(),Field.FOCUSABLE|BitmapField.FIELD_RIGHT); 
hfm.add(callbmp); 
hfm.add(NAME); 
hfm.add(mailbmp); 
add(hfm); 

Répondre

4

HorizontalFieldManager établit les champs de gauche à droite dans l'ordre dans lequel ils sont ajoutés. Les bits de style pour la disposition horizontale sont ignorés.

Si vous voulez gauche, droite et centre sur une ligne horizontale, vous aurez besoin d'un gestionnaire personnalisé.

+0

merci u beaucoup .. can u pls un peu de code comment puis-je organiser gauche, droite et centre dans le gestionnaire personnalisé – MaheshBabu

+1

Ce serait un investissement important dans mon temps et ne ferait que vous blesser - vous devez apprendre à le faire par vous-même. RIM a eu une discussion au dernier devcon sur la mise en page avancée, qui comprenait un gestionnaire qui fait cela, mais je ne suis pas en mesure de le trouver maintenant. –

6
Manager customManager = new Manager(0) 
{ 
    protected void sublayout(int width, int height) { 
     setPositionChild(
      getField(0), 
      0, 
      0); 
     layoutChild(
      getField(0), 
      getField(0).getPreferredWidth(), 
      getField(0).getPreferredHeight()); 

     setPositionChild(
      getField(1), 
      Graphics.getScreenWidth()/2 - getField(1).getPreferredWidth()/2, 
      0); 
     layoutChild(
      getField(1), 
      getField(1).getPreferredWidth(), 
      getField(1).getPreferredHeight());  

     setPositionChild(
      getField(2), 
      Graphics.getScreenWidth() - getField(2).getPreferredWidth(), 
      0); 
     layoutChild(
      getField(2), 
      getField(2).getPreferredWidth(), 
      getField(2).getPreferredHeight());  

     setExtent(width, height); 
    }  
}; 

customManager.add(new BitmapField(Bitmap.getBitmapResource("image1.png"))); 
customManager.add(new LabelField("Hello Alignment")); 
customManager.add(new BitmapField(Bitmap.getBitmapResource("image2.png"))); 
2

Cela devrait être votre exigence:
enter image description here
Il peut se faire simplement en soustrayant les largeurs des éléments que vous ajoutez sur votre gestionnaire de champ horizontal. Par défaut, le leftButton ou le premier élément que vous ajoutez sur le HFM sera ajouté à gauche. Ensuite, vous pouvez ajouter votre étiquette (userName) et le rightButton de la manière suivante:

LabelField userName = new LabelField("MaheshBabu"); 
HorizontalFieldManager horizontalBar = new HorizontalFieldManager(USE_ALL_WIDTH|Manager.NO_HORIZONTAL_SCROLL|Manager.NO_HORIZONTAL_SCROLLBAR); 
horizontalBar.setBackground(BackgroundFactory.createSolidBackground(Color.BLACK)); 

rightButton.setMargin(0, 0, 0, Display.getWidth()-rightButton.getPreferredWidth()-leftButton.getPreferredWidth()-userName.getPreferredWidth()); 

horizontalBar.add(leftButton); 
horizontalBar.add(userName); 
horizontalBar.add(rightButton);