2010-07-26 6 views
0

Ce que je veux réaliser est d'avoir un écran contextuel personnalisé avec la largeur et la hauteur spécifiées. Sur cet écran, j'ajoute deux boutons qui restent dans une rangée et alignent le centre horizontalement.Impossible d'aligner les champs horizontalement sur l'écran contextuel personnalisé dans Blackberry

public class CustomPopupScreen extends PopupScreen { 

ButtonField minimizeBf; 
ButtonField cancelBf; 
HorizontalFieldManager hfm; 

public CustomPopupScreen() { 
    super(new VerticalFieldManager()); 
    minimizeBf = new ButtonField("Minimize", FIELD_HCENTER|Field.USE_ALL_WIDTH); 
    cancelBf = new ButtonField("Cancel", FIELD_HCENTER|Field.USE_ALL_WIDTH); 
    hfm = new HorizontalFieldManager(FIELD_HCENTER|Field.USE_ALL_WIDTH); 
    hfm.add(minimizeBf); 
    hfm.add(cancelBf); 
    add(hfm); 
    //add(minimizeBf); 
    //add(cancelBf); 
} 

protected void sublayout(int width, int height) { 
    // TODO Auto-generated method stub 
    int xPos = 0; 
    int yPos = 0; 
    int sideMargin = 30; 
    int screenWidth = width - (2 * sideMargin); 
    int screenHeight = 100; 
    layoutDelegate(screenWidth, screenHeight); 
    //setPositionDelegate(0, 0); 
    super.sublayout(screenWidth, screenHeight); 
    setExtent(screenWidth, screenHeight); 
    xPos = (width - screenWidth)/2; 
    yPos = (height - screenHeight)/2; 
    setPosition(xPos, yPos); 
    // layout(screenWidth, screenHeight); 
} 

}

Si j'ajouter ces boutons à l'écran, il alignera le centre horizontalement, mais les boutons apparaissent sur autre ligne, alors que je veux qu'il apparaisse dans la même rangée. Est-ce que quelqu'un peut me dire où j'ai mal codé?

Répondre

0

Essayez de supprimer l'indicateur USE_ALL_WIDTH de votre allocation HorizontalFieldManager. Cela devrait faire l'affaire.

+0

Malheureusement, ce n'est pas le cas. Je pense que je devrais mettre quelque chose dans la méthode sublayout afin que les gestionnaires de cet écran s'alignent en conséquence, mais je ne sais pas quoi: ((. Merci pour votre aide –

0

Essayez de placer deux gestionnaires de champs verticaux, chacun occupant la moitié de la largeur disponible, à l'intérieur du gestionnaire horizontal. puis ajoutez un bouton à chacun des gestionnaires verticaux.

+0

Merci pour votre réponse Je suppose que si je veux créer le troisième bouton alors je dois ajouter un gestionnaire vertical pour cela aussi, non? Cela peut fonctionner, mais ce que je veux réaliser ici est, comment devrais-je ajouter quelque chose sur la méthode sublayout, afin que horizontalManager puisse faire son travail sur un écran contextuel personnalisé. –

0

Je me demandais juste le but d'avoir une taille personnalisée. Il y a souvent une façon correcte de faire quelque chose sans avoir à modifier la mise en page manuellement. Si vous partagez votre objectif final, nous pouvons peut-être vous aider à mieux. Comme il semble presque que vous voulez simplement faire deux boutons d'un côté à l'autre. Pour ajouter de la largeur et de la hauteur, vous pouvez ajouter des espaceurs (ajouter (nouveau SeparatorField())) aux gestionnaires de champs et spécifier leur largeur/hauteur ainsi que l'emplacement dans le gestionnaire que vous voulez. Cela permettrait à tous les champs d'utiliser leurs modèles de mise en page par défaut.

0

faire juste une

hfm = new HorizontalFieldManager(USE_ALL_WIDTH); 

je pense que cela pourrait vous aider à donner juste un essai.

Questions connexes