黑莓 - 设置LabelField背景颜色

时间:2009-08-10 21:08:42

标签: user-interface blackberry background-color

我想在带有alice蓝色背景的MainScreen上放置几个带有右对齐文本的LabelField。不幸的是,我似乎无法弄清楚如何实现这一目标。

我能做的最好的事情是在MainScreen上将我的背景设置为Color.ALICEBLUE,并将LabelFields放在屏幕上(同样具有爱丽丝蓝色背景)。

    public void paint(Graphics graphics) {
        graphics.setBackgroundColor(Color.ALICEBLUE);
        graphics.clear();
        super.paint(graphics);  
    }

和......

    LabelField display = new LabelField("", LabelField.FIELD_RIGHT){
        public void paint(Graphics graphics) {
            graphics.setColor(Color.DIMGRAY);
            graphics.setBackgroundColor(Color.ALICEBLUE);
            graphics.clear();
            super.paint(graphics);  
        }
    };

覆盖MainScreen绘图程序会给我我的alice蓝色背景,但是覆盖LabelFields的绘图程序似乎不够。结果是一个白色的行,仅在标签文本后面带有爱丽丝蓝色背景。添加USE_ALL_WIDTH会更正背景问题,但我无法正确对齐USE_ALL_WIDTH

有没有人知道这方面的工作?

2 个答案:

答案 0 :(得分:6)

在版本< = 4.5中,您可以创建具有覆盖paint()的VerticalFieldManager:

class BGManager extends VerticalFieldManager {
    public BGManager() {
        super(USE_ALL_HEIGHT|USE_ALL_WIDTH);
    }
    public void paint(Graphics graphics)
    {
        graphics.setBackgroundColor(Color.DARKRED);
        graphics.clear();
        super.paint(graphics);
    }
}

然后在你的屏幕上使用它添加简单的LabelField:

class Scr extends MainScreen {
    BGManager manager = new BGManager();
    public Scr() {
        super();
        add(manager);       
        manager.add(new LabelField("Hello!", FIELD_RIGHT));
        manager.add(new LabelField("This is a test", FIELD_RIGHT));
    }
}

在版本> = 4.6中,您可以将setBackgroud()方法用于默认屏幕管理器:

class Scr extends MainScreen {  
    public Scr() {
        super();
        VerticalFieldManager manager = 
            (VerticalFieldManager)getMainManager();
        manager.setBackground(
            BackgroundFactory.createSolidBackground(
                Color.DARKRED));        
        manager.add(new LabelField("Hello!", FIELD_RIGHT));
        manager.add(new LabelField("This is a test", FIELD_RIGHT));
    }
}

请参阅BB KB DB-00131 - How to - Change the background color of a screen

答案 1 :(得分:3)

使用

new LabelField("",LabelField.USE_ALL_WIDTH | DrawStyle.RIGHT);

不覆盖LabelField的paint方法。