Установите высоту и ширину EditField на BlackBerry
Я хочу установить высоту и ширину EditField
в моем приложении BlackBerry.
4 ответа
Вам нужно переопределить метод макета поля, чтобы установить для вас размер:
protected void layout(int width, int height)
{
super.layout(customWidth, customHeight);
setExtent(customWidth, customHeight);
}
где customWidth
а также customHeight
были установлены вами в другом месте.
super.layout(customWidth, customHeight)
выкладывает поле, чтобы использовать ваши специальные ширины и высоты.setExtent(customWidth, customHeight)
устанавливает размер поля на экране.
Вы можете сделать это, когда объявите свой EditField, используя код, подобный приведенному ниже:
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);
}
};
Вы также можете перемещаться по полю редактирования внутри горизонтального полевого менеджера и переопределять метод подслоя, чтобы установить высоту и ширину горизонтального полевого менеджера для установки высоты и ширины поля редактирования.
- Примечание 1: вы не можете установить ширину и высоту для
editField
- Примечание 2: вы используете только
sublayout
метод в менеджере - Примечание 3: если вы добавите
editField
к экрану он заполнит всю доступную ширину от начала до конца экрана
Вы можете использовать эту идею, поместив некоторые поля в левой части и поместив editField
напоследок.
Или вы можете использовать приведенный ниже код.
Вы зададите ширину и высоту как менеджера, так и поля редактирования и попытаетесь разместить их на экране:
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();
}
};
Еще один способ изменить высоту EditField - поиграть с отступом вокруг границ следующим образом:
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);