Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 使用USE_ALL_HEIGHT样式布局管理器,而不覆盖BlackBerry中的sublayout()_User Interface_Blackberry_Java Me - Fatal编程技术网

User interface 使用USE_ALL_HEIGHT样式布局管理器,而不覆盖BlackBerry中的sublayout()

User interface 使用USE_ALL_HEIGHT样式布局管理器,而不覆盖BlackBerry中的sublayout(),user-interface,blackberry,java-me,User Interface,Blackberry,Java Me,我想在带有无垂直滚动的屏幕中布局三个VerticalFieldManager。一个管理者应该与顶部对齐,一个管理者应该与底部对齐,最后一个管理者应该占据前两个之间的剩余高度 是否可以在不覆盖任何管理器的sublaout()的情况下实现?我想要达到的结果是: 我用下面的代码布局了这个屏幕。问题是,如果不重写sublayout(),我无法执行此操作。 由于您已经在使用主屏幕,您是否尝试过对顶部和底部VerticalFieldManager使用setTitle()和setStatus()?我想那

我想在带有
无垂直滚动的屏幕中布局三个
VerticalFieldManager
。一个管理者应该与顶部对齐,一个管理者应该与底部对齐,最后一个管理者应该占据前两个之间的剩余高度

是否可以在不覆盖任何管理器的
sublaout()
的情况下实现?我想要达到的结果是:


我用下面的代码布局了这个屏幕。问题是,如果不重写sublayout(),我无法执行此操作。


由于您已经在使用主屏幕,您是否尝试过对顶部和底部VerticalFieldManager使用setTitle()和setStatus()?我想那会满足你的要求

编辑


如果MainScreen过于具体,您可以编写自己的MainManager,它支持与MainScreen相同的布局组件—横幅、标题、主要内容、状态。不过,您必须编写自己的布局代码,因此仍然需要实现sublayout(),这是您特别希望避免的。有利的一面是,这将更具可组合性—您不会在随机UI组件上以特殊方式重写sublayout()方法。

由于您已经在使用主屏幕,您是否尝试过在顶部和底部VerticalFieldManager中使用setTitle()和setStatus()?我想那会满足你的要求

编辑


如果MainScreen过于具体,您可以编写自己的MainManager,它支持与MainScreen相同的布局组件—横幅、标题、主要内容、状态。不过,您必须编写自己的布局代码,因此仍然需要实现sublayout(),这是您特别希望避免的。有利的一面是,这将更具可组合性—您不会在随机UI组件上以特别的方式重写sublayout()方法。

我也想知道这个问题的答案。我还有一个屏幕,其中有一个底部对齐的字段和一个可变高度的中间字段,并且必须覆盖
sublayout()
来手动定位它们。@RemyLebeau TeamB这正是我面临的问题。我在一个聊天屏幕上工作,其中包含发送/接收消息管理器和另一个带有增强EditField的管理器,用户在其中写入新消息。两个管理器的高度都是可变的。@MrVincenzo在主屏幕上使用setStatus()非常适合您的文本输入框。我也想知道这个问题的答案。我还有一个屏幕,其中有一个底部对齐的字段和一个可变高度的中间字段,并且必须覆盖
sublayout()
来手动定位它们。@RemyLebeau TeamB这正是我面临的问题。我在一个聊天屏幕上工作,其中包含发送/接收消息管理器和另一个带有增强EditField的管理器,用户在其中写入新消息。两个管理器的高度都是可变的。@MrVincenzo在主屏幕上使用setStatus()非常适合您的文本输入框。这不是我想要的。setTitle()和setStatus()适用于特定情况。我的问题比较笼统,不涉及任何情况。虽然这不是我所希望的答案,但却是最接近的答案。谢谢。那不是我想要的。setTitle()和setStatus()适用于特定情况。我的问题比较笼统,不涉及任何情况。虽然这不是我所希望的答案,但却是最接近的答案。谢谢
public class LayoutSandboxScreen extends MainScreen {
    public LayoutSandboxScreen() {
        super(NO_VERTICAL_SCROLL);

        VerticalFieldManager vfmTop = new VerticalFieldManager(USE_ALL_WIDTH);
        vfmTop.setBackground(BackgroundFactory.createSolidBackground(Color.GREEN));
        vfmTop.add(new ButtonField("TOP", FIELD_HCENTER));

        final VerticalFieldManager vfmCenter = new VerticalFieldManager(USE_ALL_WIDTH);       
        HorizontalFieldManager hfmCenter = new HorizontalFieldManager(USE_ALL_HEIGHT | FIELD_HCENTER);
        vfmCenter.setBackground(BackgroundFactory.createSolidBackground(Color.RED));
        hfmCenter.add(new ButtonField("CENTER", FIELD_VCENTER));
        vfmCenter.add(hfmCenter);

        final VerticalFieldManager vfmBottom = new VerticalFieldManager(USE_ALL_WIDTH);       
        vfmBottom.setBackground(BackgroundFactory.createSolidBackground(Color.BLUE));
        final ButtonField btn = new ButtonField("BUTTOM", FIELD_HCENTER);        
        vfmBottom.add(btn);

        VerticalFieldManager vfmSecond = new VerticalFieldManager(USE_ALL_HEIGHT) { 
            protected void sublayout(int maxWidth, int maxHeight) {
                setExtent(maxWidth, maxHeight);

                layoutChild(vfmBottom, maxWidth, maxHeight);
                int bottomHeight = vfmBottom.getHeight();

                layoutChild(vfmCenter, maxWidth, maxHeight - bottomHeight);
                setPositionChild(vfmCenter, 0, 0);

                setPositionChild(vfmBottom, 0, maxHeight - bottomHeight);
            }
        };

        vfmSecond.add(vfmBottom);
        vfmSecond.add(vfmCenter);

        add(vfmTop);
        add(vfmSecond);
    }
}