【问题标题】:Codenameone: Alert Dialog message代号:警报对话框消息
【发布时间】:2016-08-07 13:14:24
【问题描述】:

我们想要这种格式的对话消息并查看和填充

请告诉我如何解决它。我的应用程序需要在所有平台(Android、iOS、Windows)上得到支持,我不想分别为所有平台编写本机代码。

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    实际上,在 Codename One 中自定义外观更容易,因为所有内容都是用 Java 编写的,您几乎可以自定义任何东西的外观。

    为了简单起见,我使用代码而不是样式会更好,您可以在主题设计器中自定义 Dialog UIID 和其他 UIID 以获得更大的灵活性并更轻松地进行操作。但是,这需要很多截图和解释,所以我在代码中进行了自定义:

    Form f = new Form("Test");
    Button b = new Button("Show Dialog");
    f.add(b);
    b.addActionListener(e -> {
        Dialog dlg = new Dialog("Authentication");
        Style dlgStyle = dlg.getDialogStyle();
        dlgStyle.setBorder(Border.createEmpty());
        dlgStyle.setBgTransparency(255);
        dlgStyle.setBgColor(0xffffff);
    
        Label title = dlg.getTitleComponent();
        title.setIcon(finalDuke.scaledHeight(title.getPreferredH()));
        title.getUnselectedStyle().setFgColor(0xff);
        title.getUnselectedStyle().setAlignment(Component.LEFT);
    
        dlg.setLayout(BoxLayout.y());
        Label blueLabel = new Label();
        blueLabel.setShowEvenIfBlank(true);
        blueLabel.getUnselectedStyle().setBgColor(0xff);
        blueLabel.getUnselectedStyle().setPadding(1, 1, 1, 1);
        blueLabel.getUnselectedStyle().setPaddingUnit(Style.UNIT_TYPE_PIXELS);
        dlg.add(blueLabel);
        TextArea ta = new TextArea("This is the text you want to appear in the dialog, this might line break if the text is too long...");
        ta.setEditable(false);
        ta.setUIID("DialogBody");
        ta.getAllStyles().setFgColor(0);
        dlg.add(ta);
    
        Label grayLabel = new Label();
        grayLabel.setShowEvenIfBlank(true);
        grayLabel.getUnselectedStyle().setBgColor(0xcccccc);
        grayLabel.getUnselectedStyle().setPadding(1, 1, 1, 1);
        grayLabel.getUnselectedStyle().setPaddingUnit(Style.UNIT_TYPE_PIXELS);
        dlg.add(grayLabel);
    
        Button ok = new Button(new Command("OK"));
        ok.getAllStyles().setBorder(Border.createEmpty());
        ok.getAllStyles().setFgColor(0);
        dlg.add(ok);
        dlg.showDialog();
    });
    f.show();     
    

    我建议在主题设计器中进行对话框自定义,并使用更好看的 9 片图像边框。

    【讨论】:

    • 我应该在哪里添加这个自定义代码到我的项目中。在 StateMachine.java 或 StateMachineBase.java 或其他任何地方?
    • 您可以在任何地方编写该代码以显示对话框。您可以自定义所有对话框,使其看起来像这样,例如当使用 Android 模拟器皮肤运行时,它们应该看起来非常相似。这来自 Android 原生主题,您可以从我们的 github 存储库中的 Themes 目录下载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    相关资源
    最近更新 更多