Я хочу разместить три VerticalFieldManager
на экране с NO_VERTICAL_SCROLL
. Один менеджер должен быть выровнен с TOP, один должен быть выровнен с BOTTOM, а последний должен потреблять остальную высоту между двумя предыдущими.Макет менеджера с USE_ALL_HEIGHT стилем без переопределения sublayout() в BlackBerry
Может ли это быть достигнуто без переопределения sublaout()
для любого Менеджера? В результате я хочу достичь, это:
Я layouted этого экрана со следующим кодом. Проблема в том, что я не смог сделать это без переопределения sublayout().
public class LayoutSandboxScreen extends MainScreen {
public LayoutSandboxScreen() {
super(NO_VERTICAL_SCROLL);
VerticalFieldManager vfmTop = new VerticalFieldManager(USE_ALL_WIDTH);
vfmTop.setBackground(BackgroundFactory.createSolidBackground(Color.GREEN));
vfmTop.add(new ButtonField("TOP", FIELD_HCENTER));
final VerticalFieldManager vfmCenter = new VerticalFieldManager(USE_ALL_WIDTH);
HorizontalFieldManager hfmCenter = new HorizontalFieldManager(USE_ALL_HEIGHT | FIELD_HCENTER);
vfmCenter.setBackground(BackgroundFactory.createSolidBackground(Color.RED));
hfmCenter.add(new ButtonField("CENTER", FIELD_VCENTER));
vfmCenter.add(hfmCenter);
final VerticalFieldManager vfmBottom = new VerticalFieldManager(USE_ALL_WIDTH);
vfmBottom.setBackground(BackgroundFactory.createSolidBackground(Color.BLUE));
final ButtonField btn = new ButtonField("BUTTOM", FIELD_HCENTER);
vfmBottom.add(btn);
VerticalFieldManager vfmSecond = new VerticalFieldManager(USE_ALL_HEIGHT) {
protected void sublayout(int maxWidth, int maxHeight) {
setExtent(maxWidth, maxHeight);
layoutChild(vfmBottom, maxWidth, maxHeight);
int bottomHeight = vfmBottom.getHeight();
layoutChild(vfmCenter, maxWidth, maxHeight - bottomHeight);
setPositionChild(vfmCenter, 0, 0);
setPositionChild(vfmBottom, 0, maxHeight - bottomHeight);
}
};
vfmSecond.add(vfmBottom);
vfmSecond.add(vfmCenter);
add(vfmTop);
add(vfmSecond);
}
}
Я также хотел бы ответить на этот вопрос. У меня также есть экран с выровненными по нижнему краю полями и средним полем переменной высоты и должен переопределять 'sublayout()', чтобы расположить их вручную. –
@ RemyLebeau-TeamB То, с чем я тоже сталкиваюсь. Я работаю на экране чата, который содержит диспетчер отправленных/полученных сообщений и другой менеджер с расширенным EditField, где пользователь записывает новые сообщения. Оба менеджера имеют переменную высоту. – mrvincenzo
@MrVincenzo с использованием setStatus() на MainScreen идеально подходит для вашего текстового ввода. –