Jas*_*rge 3 user-interface blackberry background-color
我想在带有爱丽丝蓝色背景的MainScreen上放置几个带有右对齐文本的LabelFields.不幸的是,我似乎无法弄清楚如何实现这一目标.
我能做的最好的事情是在MainScreen上将我的背景设置为Color.ALICEBLUE,并将LabelFields放在屏幕上(同样具有爱丽丝蓝色背景).
public void paint(Graphics graphics) {
graphics.setBackgroundColor(Color.ALICEBLUE);
graphics.clear();
super.paint(graphics);
}
Run Code Online (Sandbox Code Playgroud)
和...
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);
}
};
Run Code Online (Sandbox Code Playgroud)
覆盖MainScreen绘制例程给了我蓝色背景,但是覆盖LabelFields的绘图例程似乎不够.结果是一个白色的行,仅在标签文本后面带有爱丽丝蓝色背景.添加USE_ALL_WIDTH更正了背景问题,但我无法正确对齐USE_ALL_WIDTH.
有谁知道这方面的工作?
在版本<= 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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的屏幕上使用它添加简单的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));
}
}
Run Code Online (Sandbox Code Playgroud)
在版本> = 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));
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅BB KB DB-00131 - 如何 - 更改屏幕的背景颜色