2010-12-14 13 views

Répondre

8

Vous devez remplacer la méthode de mise en page du champ pour définir la taille pour vous:

protected void layout(int width, int height) 
{ 
    super.layout(customWidth, customHeight); 
    setExtent(customWidth, customHeight); 
} 

customWidth et customHeight ont été créés par vous ailleurs.

  • super.layout(customWidth, customHeight) établit le champ à utiliser votre largeur spéciale & hauteur.

  • setExtent(customWidth, customHeight) définit la taille du champ sur l'écran.


Vous pouvez le faire lorsque vous déclarez votre EditField en utilisant un code similaire au code ci-dessous:

final int customWidth = Display.getWidth(); 
final int customHeight = 30; 

Field myEditField = new EditField() 
{ 
    protected void layout(int width, int height) 
    { 
     super.layout(customWidth, customHeight); 
     setExtent(customWidth, customHeight); 
    } 

}; 
+0

Au lieu de: Champ myEditField = new EditField() devrait être: EditField myEditField = new EditField() – Sarang

+0

@Sarang Cela dépend de ce que vous voulez faire, rappelez-vous que 'EditField' est une sous-classe de' Field'. –

3

Vous pouvez également arpenter le champ d'édition dans un horizontalFieldmanager et remplacer la méthode de sublayout à définir la hauteur et la largeur de horizontalfieldmanager pour définir la hauteur & largeur de editfield

+0

redéfinir 'sublayout()' sorte de l'utilisation d'un 'HorizontalFieldManager' (par opposition à simplement' Manager'). J'ai aussi vu beaucoup de problèmes étranges quand les gens ont fait ça. En général, si les gens veulent vraiment un bon contrôle de la mise en page, ils doivent soit décider que c'est le travail du Manager et la sous-classe 'Manager', soit décider que c'est une propriété inhérente de l'enfant' Field'. – Nate

1
  • Note 1: Vous ne pouvez pas définir la largeur et la hauteur pour editField
  • Note 2: Vous utilisez simplement la méthode sublayout dans le gestionnaire
  • Note 3: Si vous ajoutez le editField à l'écran, il remplira toute la largeur disponible Du début à la fin de l'écran

Vous pouvez utiliser cette idée en mettant des champs dans le côté gauche et en mettant votre editField dans le dernier.

Ou, vous pouvez utiliser le code ci-dessous.

Vous définissez la largeur et la hauteur à la fois le gestionnaire et le champ d'édition et d'essayer de les mettre à l'écran:

HorizontalFieldManager containerManager = new HorizontalFieldManager() { 
    public int getPreferredHeight() { 
     return super.getPreferredHeight(); 
    } 

    public int getPreferredWidth() { 
     return super.getPreferredWidth(); 
    } 

    protected void sublayout(int maxWidth, int maxHeight) { 
     setExtent(getPreferredWidth(), getPreferredHeight()); 
     super.sublayout(getPreferredWidth(), getPreferredHeight()); 
    } 
}; 


EditField editField = new EditField(Field.FIELD_VCENTER) { 
    public int getPreferredHeight() { 
     // TODO Auto-generated method stub 
     return super.getPreferredHeight(); 
    } 

    public int getPreferredWidth() { 
     // TODO Auto-generated method stub 
     return super.getPreferredWidth(); 
    } 
}; 
0

Une autre façon de modifier la hauteur d'un EditField est en bidouillant avec le rembourrage autour des frontières comme ceci:

EditField emailField = new EditField("", "optional initial text"); 

XYEdges xyEdge = new XYEdges(2, 2, 2, 2); 
XYEdges xyEdgeColors = new XYEdges(0x00dddddd, 0x00dddddd, 0x00dddddd, 0x00dddddd); 
Border aBorder = BorderFactory.createSimpleBorder(xyEdge, xyEdgeColors, Border.STYLE_SOLID); 

emailField.setBorder(aBorder); 
emailField.setPadding(10, 5, 5, 10);