Blackberry中的setStatus()

时间:2013-12-04 14:00:15

标签: blackberry blackberry-simulator blackberry-eclipse-plugin

我想在Blackberry的屏幕底部和右侧添加一个LabelField。要在屏幕底部设置标签,

我用过,

this.setStatus(lbl_version);

使输出完全正常,但是,在labelfield后面,没有设置背景图像。标签设置在白色普通背景上。我想在背景图像和屏幕底部设置标签。

请参阅以下图片网址,您将有更好的主意。

提前致谢。请帮帮我。

http://i.stack.imgur.com/5UKv6.png

2 个答案:

答案 0 :(得分:2)

首先,确保您的LabelField具有透明背景,然后您应该看到包含它的MainScreen上设置的背景。

其次,我相信您需要在主屏幕本身及其嵌入式“主管理器”上设置(图像)背景,以便全屏显示相同的背景。

例如,

public class LabelScreen extends MainScreen {

   public LabelScreen() {
      super(MainScreen.VERTICAL_SCROLL | MainScreen.VERTICAL_SCROLLBAR);

      Background bg = BackgroundFactory.createSolidBackground(Color.GREEN);
      getMainManager().setBackground(bg);
      setBackground(bg);

      LabelField status = new LabelField("Hello Status");
      status.setBackground(BackgroundFactory.createSolidTransparentBackground(0, 0));
      setStatus(status);
   }

}

注意:上面的示例使用了实体颜色背景,但对于图像背景应该采用相同的方式。

答案 1 :(得分:2)

我会将此添加为对Nate答案的评论,但我没有足够的空间,我无法在评论中格式化代码。

我认为Nate的解决方案有效,因为他使用的是纯色,并且没有标题或横幅区域。当使用位图或渐变作为背景并且有标题或横幅时,我认为它不会起作用。

要了解您需要了解MainScreen中使用的Managers所需的答案。据我了解,有很多经理人使用过。一个 - 委托管理器,用于整个屏幕。除此之外还有:

  1. 位于屏幕顶部的横幅管理器
  2. 标题管理器位于横幅管理器
  3. 主要经理,
  4. 状态管理器,位于底部 屏幕。
  5. 代表经理将为所有其他经理提供背景,如果他们是透明的。我的测试表明,横幅字段和状态字段的管理者的背景是透明的。标题字段管理器的背景不是 - 它是黑色的 - 但更改它似乎有问题。

    无论如何,在我的测试中,为了满足要求,您需要做的就是根据需要设置委托管理器的背景,并将MainManager的背景设置为透明。

    以下代码是以我认为回答问题的方式设置的。但是我还留下了一些注释掉的线条,我建议你取消注释并注意效果。这很有意思(至少对像我这样伤心的人)。

    Background transparentBackground = BackgroundFactory.createSolidTransparentBackground(0, 0);
    Background gradientBackground = BackgroundFactory.createLinearGradientBackground(0X00909090, 0x00808080, 0x00E0E0E0, 0x00E8E8E8);
    getMainManager().setBackground(transparentBackground);
    getDelegate().setBackground(gradientBackground);
    // this is the same as this.setBackground(gradientBackground);
    
    LabelField banner = new LabelField("Hello Banner");
    // banner.setBackground(gradientBackground);
    setBanner(banner);
    
    // LabelField title = new LabelField("Hello Title");
    // title.setBackground(transparentBackground);
    // setTitle(title);
    // title.getManager().setBackground(transparentBackground);
    
    LabelField status = new LabelField("Hello Status");
    // status.setBackground(gradientBackground);
    setStatus(status);
    
    LabelField content = new LabelField("Hello Content", LabelField.FOCUSABLE);
    content.setBackground(transparentBackground);
    add(content);
    
    // Following just added so that focus can be moved off the content LabelField
    add(new NullField());
    

    最后,我是否可以推荐这篇文章,以便在MainScreen上进行一些有趣的阅读 MainScreen explained