【问题标题】:Blackberry prob with FIELD_BOTTOM in HorizontalFieldManagerHorizo​​ntalFieldManager 中带有 FIELD_BOTTOM 的黑莓问题
【发布时间】:2012-04-06 22:44:53
【问题描述】:

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

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

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);

我的代码有什么问题?如何设置像上面这样的屏幕?

【问题讨论】:

    标签: user-interface blackberry button horizontalfieldmanager


    【解决方案1】:

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

    要记住的重要对齐规则:

    • Horizo​​ntalFieldManager 只能垂直对齐字段。向水平管理器添加字段时,只有以下对齐方式有效:FIELD_TOP、FIELD_VCENTER、FIELD_BOTTOM。

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

    这是一个代码 sn-p,可以满足您的要求。

    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】:

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

      【讨论】:

      • 如何设置背景图片?
      • setBackground(BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource(your image path)));尝试在经理上调用它。
      • 并且你想设置背景,所以只需制作一个 hfm 给它所需的高度并在该管理器上使用上面的代码并将其添加到你的 setStatus();
      • 你是在告诉我把hfm设置为FIELD_BOTTOM|USE_ALL_HEIGHT并在其中添加另一个hrm,所有按钮都会添加到内部hrm中吗?
      猜你喜欢
      • 2011-05-10
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      • 2011-09-10
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多