我想在Blackberry的屏幕底部和右侧添加一个LabelField。要在屏幕底部设置标签,
我用过,
this.setStatus(lbl_version);
使输出完全正常,但是,在labelfield后面,没有设置背景图像。标签设置在白色普通背景上。我想在背景图像和屏幕底部设置标签。
请参阅以下图片网址,您将有更好的主意。
提前致谢。请帮帮我。
答案 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所需的答案。据我了解,有很多经理人使用过。一个 - 委托管理器,用于整个屏幕。除此之外还有:
代表经理将为所有其他经理提供背景,如果他们是透明的。我的测试表明,横幅字段和状态字段的管理者的背景是透明的。标题字段管理器的背景不是 - 它是黑色的 - 但更改它似乎有问题。
无论如何,在我的测试中,为了满足要求,您需要做的就是根据需要设置委托管理器的背景,并将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