Je souhaite définir la hauteur et la largeur d'un EditField
dans mon application BlackBerry.Définir la hauteur et la largeur de EditField sur BlackBerry
Répondre
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);
}
où 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);
}
};
Au lieu de: Champ myEditField = new EditField() devrait être: EditField myEditField = new EditField() – Sarang
@Sarang Cela dépend de ce que vous voulez faire, rappelez-vous que 'EditField' est une sous-classe de' Field'. –
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
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
- 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();
}
};
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);
comment puis-je obtenir plus de réponses ??? – User
Cette question a été répondue ici: http://stackoverflow.com/questions/1338671/blackberry-custom-size-editfield – gnuf