【问题标题】:Layout composition varying between preview and running app in CN1CN1 中预览和运行应用程序之间的布局组成不同
【发布时间】:2017-02-27 18:14:44
【问题描述】:

我配置了一个布局,结果如下: Form 的内容窗格中的LayoutTableLayout,它由一个单元格组成。内容窗格只有一个容器作为子容器,我将 layoutConstraint 设置为以下修改值:width = 100%, height = 100%, Align = CENTER, Vertical Align = CENTER

换句话说,我将表单的组件居中。

在预览中它看起来像预期的那样,但当应用程序在模拟器中运行时却不是! 注意:

  1. 我没有在我的代码中修改任何样式或布局属性!因此,我不知道为什么它在模拟器中不符合预期。

  2. How to show two or more label at centre of the container in codenameone 的方法对我不起作用!

  3. 这是我关于该表单的代码:

    @Override
    protected void postIntroLangSelect(Form f) {
    
      f.getTitleArea().setHidden(true);
      f.revalidate();
    
      // button configuration
      Button btnDE = findButtonDE(f);
      Button btnTR = findButtonTR(f);
    
      btnDE.addActionListener((e) -> {
         settings.setLocale(Lang.GERMAN);
         showNextForm();
      });      
      btnTR.addActionListener((e) -> {
        settings.setLocale(Lang.TURKISH);
        showNextForm();
      });
    }
    

【问题讨论】:

    标签: layout codenameone


    【解决方案1】:

    将表单的布局设置为BorderLayout 并检查Absolute Center,然后在表单上添加一个容器,并将其布局约束设置为Center。给这个容器一个 BoxLayout Y 布局,并在其中添加所有其他组件。

    如果这种方法不适合您,那么您将不得不手动编写表单并将其布局设置为 new BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER)

    【讨论】:

    • 谢谢,这对我有用!我错过了查看Absolute Center
    • 我仍然很好奇为什么我的方法不起作用,因为它在预览中正确显示...
    • 我猜这里有很多细微差别,但您是否在表格中定义了 1 行和 1 列?如果不是,您可能已经创建了 2 行占据整个屏幕。
    • @ShaiAlmog 是的,我做到了。我设置了一个只有一行一列的表格。
    • 这可能会以某种方式改变吗?例如。如果您使用添加元素的 GUI 构建器,然后在删除旧元素之前添加新元素...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多