Проблема Blackberry fieldManager 8900 по сравнению с 9550

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

Я добавил несколько кнопок в VerticalFieldManager. Затем я добавил verticalFieldManager в horizontalFieldManager, чтобы центрировать кнопки.

Проблема на ББ 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);

А для закрытия экрана использую штатную "клавишу возврата" устройства ББ без перезаписи.


person Martin    schedule 27.12.2011    source источник
comment
берем кнопку в hfm и добавляем в HFM.   -  person BBdev    schedule 28.12.2011


Ответы (1)


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

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

person Mister Smith    schedule 28.12.2011
comment
У вас есть пример для gridManager? Я следую за менеджером GridFieldManager headGridMng = new GridFieldManager (1, 4, GridFieldManager.USE_ALL_HEIGHT | Manager.USE_ALL_WIDTH | GridFieldManager.FIXED_SIZE); В сочетании с headGridMng.setColumnProperty (XX, GridFieldManager.FIXED_SIZE, XXX); и headGridMng.add (новый LabelField (, DrawStyle.LEFT | Field.FIELD_LEFT)); - person Martin; 30.12.2011