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

StackOverflow https://stackoverflow.com/questions/1365923

Вопрос

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

Это было полезно?

Решение

Полевые менеджеры BlackBerry UI, как известно, очень раздражают при выравнивании полей.Менеджеры, кажется, игнорируют все флаги стиля (например, 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 принимает только стили вертикального выравнивания, а ВертикальныйFieldManager принимает только горизонтальное выравнивание.Вот и все.Раздражает ++

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top