Установите высоту и ширину 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);
Другие вопросы по тегам