Blackberry FieldManager выпуск 8900 против 9550 - PullRequest
0 голосов
/ 28 декабря 2011

Мой набор кнопок как бы перемещается вправо после нажатия и закрытия нового экрана.

Я добавил несколько кнопок в VerticalFieldManager.Затем я добавил вертикальный FieldManager в горизонтальный FieldManager для центрирования кнопок.

Проблема в BB 8900 (Кривая) - все в порядке.На 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 Ответ

1 голос
/ 28 декабря 2011

Это довольно странно, но меня это не удивляет в ББ.

ОБНОВЛЕНИЕ: После просмотра некоторого моего кода для центрирования объектов, я могу сказать, что из-за прокрутки у 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.

...