【问题标题】:Codename One refresh dialog代号一刷新对话框
【发布时间】:2020-09-28 12:41:00
【问题描述】:

我有一个 Android 应用程序,我想在其中刷新打开的对话框的布局。

对话框有一个容器,里面有一个按钮和一个标签,当对话框打开时,我想通过按钮动作来改变标签内的文字和容器在屏幕上的位置。

标签内的文字发生变化,但容器的位置不变。有什么办法可以做到这一点?

非常感谢...这是我的代码:

Button buttonDialog = new Button("Yes");
Container container = new Container (new BorderLayout ());
SpanLabel spanLabel = new SpanLabel("One");
Dialog dialogStart = new Dialog("Button", new BoxLayout (BoxLayout.Y_Axis));

dialogStart.getTitleStyle().setFgColor(0xcccccc);
dialogStart.getTitleStyle().setBorder(Border.createEmpty());
dialogStart.getTitleStyle().setFont(Font.createSystemFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_LARGE));
dialogStart.setDisposeWhenPointerOutOfBounds(false);
dialogStart.setScrollable(false);
dialogStart.setScrollVisible(false);
dialogStart.setLayout(new BorderLayout());

container.add(BorderLayout.CENTER, spanLabel);
container.add(BorderLayout.SOUTH, buttonDialog);

dialogStart.add(dialogStart);

buttonDialog.addActionListener(l->{

    spanLabel.setText("Two");
    containerDialog.getAllStyles().setMargin(1000,100,500,150);  // does not work 
    dialog.repaint();                 // does not work 
    dialog.refreshTheme();            // does not work      
});

【问题讨论】:

    标签: dialog codenameone


    【解决方案1】:

    删除所有这些黑客。使用专门为此用例构建的growOrShrink()

    如果您需要对话框处于精确的大小/位置。只需禁用对话框过渡动画(设置为空不为空)并处理它。然后显示一个没有“in”动画的新对话框。

    【讨论】:

    • 酷,正是我需要的。每当我认为在 CN1 中某些事情可能无法实现时,你都会让我感到惊讶。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    相关资源
    最近更新 更多