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