首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HorizontalFieldManager中使用FIELD_BOTTOM的黑莓探测器

在HorizontalFieldManager中使用FIELD_BOTTOM的黑莓探测器
EN

Stack Overflow用户
提问于 2012-03-22 19:12:42
回答 2查看 402关注 0票数 0

我正在尝试实现一个如下所示的屏幕:

为此,我使用以下代码。它根本不起作用。

代码语言:javascript
复制
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);

我的代码中有什么问题?我怎样才能像上面那样设置一个屏幕?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-22 19:55:14

有几种方法可以实现你所要求的。一种方法是按照BBdev的建议使用setStatus()方法(它只适用于MainScreen类型的屏幕,而不适用于FullScreen类型的屏幕)。另一种选择是手动对齐底部。

需要记住的重要对齐规则:

  • HorizontalFieldManager只能垂直对齐字段。将字段添加到水平管理器时,只有以下对齐样式有效: FIELD_TOP、FIELD_VCENTER、FIELD_BOTTOM。
  • VerticalFieldManager只能水平对齐域。向垂直字段管理器添加字段时,只有以下对齐样式有效: FIELD_LEFT、FIELD_HCENTER、FIELD_RIGHT。

下面是一段代码片段,它可以完成您所要求的操作。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2012-03-22 19:19:14

尝试在一个HorizontalFieldManager中添加所有按钮,并使用setStatus(添加按钮的hfmInwhich )。这将设置屏幕底部的按钮。并在setStatus之前添加labelField Hello world。就是这样。:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9821154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档