Установите высоту и ширину EditField на BlackBerry - PullRequest
1 голос
/ 14 декабря 2010

Я хочу установить высоту и ширину EditField в моем приложении BlackBerry.

Ответы [ 4 ]

8 голосов
/ 17 ноября 2011

Вам нужно переопределить метод макета поля, чтобы установить для вас размер:

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);
    }

};
3 голосов
/ 01 декабря 2011

Вы также можете перемещаться по полю редактирования внутри горизонтального полевого менеджера и переопределять метод подслоя, чтобы установить высоту и ширину горизонтального полевого менеджера для установки высоты и ширины поля редактирования

1 голос
/ 11 ноября 2012
  • Примечание 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();
    } 
};
0 голосов
/ 28 ноября 2012

Еще один способ изменить высоту 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);
...