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);
}
}