代号一 - 调整 master/detail 布局

Codename One - resizing master/detail layout

我的 Android 应用程序有一个特殊的 master/detail 布局:横向模式下左侧的列表必须与纵向模式下的一样大。

我正在移植代号为 One 的应用程序。

这是我在 mainForm 代码中的内容:

if(isTablet() && !isPortrait()) {

        itemListContainer.setWidth(Display.getInstance().getDisplayHeight());
        editingContainer.setWidth(Display.getInstance().getDisplayWidth()-Display.getInstance().getDisplayHeight());
        
        System.out.println("size "+itemListContainer.getWidth()+" "+itemListContainer.getHeight()); 
        //width was 0, now it is 1536 but the actual layout is the same as before, height is 0
//calls to animate() were here but useless
        
        mainForm.add(itemListContainer).add( editingContainer);
      } else {
      
        mainForm.add(itemListContainer);
        
    }
    

我也试过调用 animate() 方法。

mainForm布局为BoxLayout.x(),即横排。

以上代码对大小或布局没有影响。我在模拟器上得到了相同的布局,左侧容器的大小与我放入其中的标签大小相同。

调整大小的正确方法是什么?

使用setPreferredW(int)setWidth 将被布局覆盖,但首选宽度将持续到 updates/rotation 等

请注意,首选大小方法已弃用,因为大多数用途不鼓励使用它们。更好的方法是使用在这种情况下可能不适用的布局。例如。 table 布局支持放置具有宽度百分比约束的组件,适用于大多数此类用例。

弃用只是为了引起您的注意,这个 API 不会消失或停止工作...