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.

Другие вопросы по тегам