Blackberry fieldManager выпуск 8900 против 9550
Моя кнопка как бы двигается вправо после нажатия и закрытия нового экрана.
Я добавил несколько кнопок в VerticalFieldManager. Затем я добавил вертикальный FieldManager в горизонтальный FieldManager для центрирования кнопок.
Проблема на BB 8900(Curve) все нормально. На 9550 (сенсорный экран) он работает только при первом открытии экрана. Но если я открою на этом экране другой экран и закрою открытый экран, кнопки будут перемещаться вправо. Но только на 9550??? На кривой я могу открыть новый экран и закрыть новый, и, похоже, он должен. Кто-нибудь знает эту проблему?
VerticalFieldManager verticalFieldMng = new VerticalFieldManager();
ButtonField btnSendAdrViaSMS = new ButtonField("test");
verticalFieldMng2.add(btnSendAdrViaSMS);
ButtonField btn2 = new ButtonField("test2");
verticalFieldMng2.add(btn2);
ButtonField btn3 = new ButtonField("test2");
verticalFieldMng2.add(btn3);
HorizontalFieldManager horizontalFieldManager = new HorizontalFieldManager(HorizontalFieldManager.FIELD_HCENTER);
horizontalFieldManager.add(verticalFieldMng2);
add(horizontalFieldManager);
Для открытия нового экрана я использую
Screen_SendSMS sendSMS = new Screen_SendSMS("",link);
UiApplication.getUiApplication().pushModalScreen(sendSMS);
И чтобы закрыть экран, я использую обычную "клавишу возврата" устройства BB, не перезаписывая его.
1 ответ
Это довольно странно, но не удивляет меня в BB.
ОБНОВЛЕНИЕ: После просмотра некоторого моего кода для центрирования объектов я могу сказать, что из-за прокрутки HorizontalFieldManager возникают проблемы с центрированием полей. Поэтому, когда мне нужно центрировать по горизонтали, я использую VerticalFieldManager, а когда мне нужно центрировать по вертикали, я использую HorizontalFieldManager.
Основной шаблон для центрирования полей:
VerticalFieldManager vfm = new VerticalFieldManager(Manager.USE_ALL_WIDTH);
Field toCenter = new <Field>(DrawStyle.HCENTER | Field.FIELD_HCENTER );
vfm.add(toCenter);
В вертикальном положении это будет:
HorizontalFieldManager hfm = new HorizontalFieldManager(Manager.USE_ALL_HEIGHT);
Field toCenter = new <Field>(DrawStyle.VCENTER | Field.FIELD_VCENTER );
hfm.add(toCenter);
Вы можете комбинировать флаги с другим флагом стиля с помощью арифметического оператора ИЛИ.
В вашем случае вам придется сделать это дважды: сначала кнопки и vfm, затем vfm и hfm.