Blackberry Pro с FIELD_BOTTOM в HorizontalFieldManager - PullRequest
0 голосов
/ 22 марта 2012

Я пытаюсь реализовать экран, как показано ниже:

enter image description here

Для этого я использую следующий код. Это не работает вообще.

HorizontalFieldManager outerManager = new HorizontalFieldManager(FIELD_BOTTOM|USE_ALL_HEIGHT);
        outerManager.setBackground(BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource("img/bghome.png")));

final FCLabelField selectedLabel = new FCLabelField("Hello World", LabelField.USE_ALL_WIDTH | DrawStyle.HCENTER);

selectedLabel.setFontColor(Color.BLACK);
selectedLabel.setBackground(BackgroundFactory.createSolidBackground(0x00cccccc));
outerManager.add(selectedLabel);

HorizontalFieldManager innerManager = new HorizontalFieldManager();

innerManager.setPadding(0, 10, 0, 10);


innerManager.add(new ButtonField( "Button 1", ButtonField.CONSUME_CLICK | ButtonField.FIELD_RIGHT ));
innerManager.add(new ButtonField( "Button 2", ButtonField.CONSUME_CLICK | ButtonField.FIELD_RIGHT ));
innerManager.add(new ButtonField( "Button 3", ButtonField.CONSUME_CLICK | ButtonField.FIELD_RIGHT ));
innerManager.add(tab4);
innerManager.add(tab5);

outerManager.add(innerManager);

innerManager.setBackground(BackgroundFactory.createSolidBackground(0x00cccccc));

add(outerManager);

В чем проблема в моем коде? Как я могу установить экран как выше?

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

Есть несколько способов добиться того, что вы просили. Одним из способов является использование метода setStatus() в качестве BBdev (он будет работать только для экранов типа MainScreen и не будет работать для экранов типа FullScreen). Другой альтернативой было бы сделать выравнивание по низу вручную .

Важные правила выравнивания, которые следует помнить:

  • HorizontalFieldManager может выравнивать поля только по вертикали. При добавлении полей в горизонтальный менеджер действуют только эти стили выравнивания: FIELD_TOP, FIELD_VCENTER, FIELD_BOTTOM.

  • VerticalFieldManager может выравнивать поля только по горизонтали. При добавлении полей в вертикальный диспетчер полей действуют только эти стили выравнивания: FIELD_LEFT, FIELD_HCENTER, FIELD_RIGHT.

Вот фрагмент кода, который делает то, что вы просили.

public class UISandbox extends MainScreen {
    public UISandbox() {
        super(NO_VERTICAL_SCROLL | NO_HORIZONTAL_SCROLL | USE_ALL_HEIGHT | USE_ALL_WIDTH);

        HorizontalFieldManager outerManager = new HorizontalFieldManager(USE_ALL_HEIGHT);
        outerManager.setBackground(BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource("img/bghome.png")));

        VerticalFieldManager innerMngr = new VerticalFieldManager(USE_ALL_WIDTH | FIELD_BOTTOM); 
        final LabelField selectedLabel = new LabelField("Hello World", FIELD_HCENTER) {
            protected void paint(Graphics g) {
                g.setColor(Color.BLACK);
                super.paint(g);
            }
        };
        selectedLabel.setBackground(BackgroundFactory.createSolidBackground(0x00cccccc));
        innerMngr.add(selectedLabel);

        GridFieldManager innerInnerMngr = new GridFieldManager(1, 3, USE_ALL_WIDTH);
        innerInnerMngr.setPadding(10, 0, 10, 0);
        innerInnerMngr.setColumnProperty(0, GridFieldManager.AUTO_SIZE, 0);
        innerInnerMngr.setColumnProperty(1, GridFieldManager.AUTO_SIZE, 0);
        innerInnerMngr.setColumnProperty(2, GridFieldManager.AUTO_SIZE, 0);
        innerInnerMngr.add(new ButtonField("Button 1", ButtonField.CONSUME_CLICK | FIELD_HCENTER));
        innerInnerMngr.add(new ButtonField("Button 2", ButtonField.CONSUME_CLICK | FIELD_HCENTER));
        innerInnerMngr.add(new ButtonField("Button 3", ButtonField.CONSUME_CLICK | FIELD_HCENTER));

        innerMngr.add(innerInnerMngr);
        outerManager.add(innerMngr);
        add(outerManager);
    }
}
2 голосов
/ 22 марта 2012

Попробуйте добавить все кнопки в одну HorizontalFieldManager и используйте setStatus (hfm, в который вы добавили кнопки).Это установит кнопку внизу экрана.И добавьте labelField Hello world перед setStatus.Это оно.:)

...