我正在尝试这样做:
public class DialogMenuHawaii extends Dialog {
Style s = UiFactory.getBaseStyle();
s.setBgTransparency(0);
s.setBgImage( <my image >);
this.setUnselectedStyle(s);
}
但它不起作用。
答案 0 :(得分:2)
首先,我建议您使用主题。我们不断改变小的实施细节,例您正在进行的自定义操作将无法在LWUIT 1.4和1.5之间移植。没有任何理由不使用这样的主题。
如果您对将视图逻辑手动编码到应用程序中的痛苦和痛苦感兴趣,可以使用多种方法(如getDialogComponent()
)从中获取样式并对其进行操作。 Dialog是一个复杂的野兽,因为它实际上是一个远离边缘填充的形状。
答案 1 :(得分:1)
在资源编辑器中打开'.res'文件,然后选择首选主题
注意:上面的代码将反映应用程序中的所有对话框。如果您想要一个带背景图像的特定对话框而不是从这些默认样式派生新样式,并按照上述步骤将其应用于 DialogMenuHawaii 或任何运行时对话框。
如何:我建议您浏览Shai的博客文章LWUIT Resource Editor Tutorial Part 1,直至第10部分。更好地了解资源编辑器的功能和特性。
PS:程序化我无法使用 TextArea 来实现它,这是默认Dialog的情况。如果用标签替换对话框主体组件,如果工作正常,则代码示例如下所示。我没有深入研究为什么会如此?也许会在我的空闲时间做这件事。因此,我提出了一个工作替代解决方案,使用资源编辑器在上面编写脚本,使用代码
class MyDialog extends Dialog {
public void show() {
Container octnPane = this.getDialogComponent();
octnPane.getUnselectedStyle().setBgTransparency(0, false);
Container ctnPane = (Container)((BorderLayout)octnPane.getLayout()).getCenter();
ctnPane.getUnselectedStyle().setBackgroundType(Style.BACKGROUND_IMAGE_SCALED, false);
ctnPane.getUnselectedStyle().setBgImage(myImage, false);
Label t = new Label("Dialog");
t.setUIID("DialogBody");
t.getUnselectedStyle().setBgTransparency(0, false);
ctnPane.addComponent(t);
super.show();
}
}
答案 2 :(得分:0)
这是对话背景。
Dialog dialog = new Dialog();
dialog.getDialogStyle().setBgImage(Image.createImage("/image/image.png"));
如果要设置Dialog与图像的透明度。
dialog.getStyle().setBgImage(Image.createImage("/image/image.png");