Когда я пытаюсь выровнять поля по вертикали, они ведут себя не так, как я ожидал?(Затмение Blackberry JDE4.5.0)

Я использую плагин Eclipse & JDE 4.5.0. Как выровнять поля по вертикали. Можем ли мы выровнять поля как LEFT_BOTTOM,RIGHT_BOTTOM, LEFT_VCENTER, RIGHT_VCENTER, CENTER(вертикально и горизонтально), BOTTOM_CENTER, так далее...?

2 ответа

Решение

Полевые менеджеры пользовательского интерфейса BlackBerry, как известно, раздражают, когда имеют дело с выравниванием полей. Менеджеры, похоже, игнорируют все флаги стиля (например, HCENTER, VCENTERи т. д.), так что единственный способ сделать это - переопределить sublayout метод вашего менеджера и сделать это самостоятельно.

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

VerticalFieldManager    mainmanager     = new VerticalFieldManager(Field.USE_ALL_WIDTH | Field.USE_ALL_HEIGHT)
{
    protected void sublayout( int width, int height ) {

        super.sublayout( width, height );

        width = getWidth();
        height = getHeight();

        for (int i = 0;i < this.getFieldCount() - 1; i++)
        {
            Field field = this.getField(i);
            //this positions the item in the middle of the manager
            int x = (int)((width - field.getWidth()) * 0.50);
            setPositionChild(field, x, field.getTop());
        }
    }

Обратите внимание, что USE_ALL_WIDTH а также USE_ALL_HEIGHT флаги стиля важны. Если вы хотите сделать такие вещи, как вертикальное центрирование, выравнивание по нижнему правому краю и т. Д., Вам нужно будет написать код позиционирования самостоятельно. Например, для выравнивания по правому нижнему краю вы можете установить позицию x в ширину менеджера за вычетом ширины поля, а позицию y - в высоту менеджера за вычетом высоты поля.

Если вы хотите использовать один пользовательский класс менеджера для обработки нескольких различных стилей (например, справа внизу, слева внизу), вы можете добавить некоторую логику в подслой, чтобы проверить флаг стиля поля, а затем расположить поле соответствующим образом.

Надеюсь, все это имеет смысл и поможет вам.:)

HorizontalFieldManager принимает только стили вертикального выравнивания, а VerticalFieldManager принимает только горизонтальное выравнивание. Вот и все. Раздражает ++

Другие вопросы по тегам