Когда я пытаюсь выровнять поля по вертикали, они ведут себя не так, как я ожидал? (Затмение Blackberry JDE4.5.0)
-
21-09-2019 - |
Вопрос
Я использую плагин 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 принимает только горизонтальное выравнивание.Вот и все.Раздражает ++