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