我正在尝试实现一个如下所示的屏幕:

为此,我使用以下代码。它根本不起作用。
HorizontalFieldManager outerManager = new HorizontalFieldManager(FIELD_BOTTOM|USE_ALL_HEIGHT);
outerManager.setBackground(BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource("img/bghome.png")));
final FCLabelField selectedLabel = new FCLabelField("Hello World", LabelField.USE_ALL_WIDTH | DrawStyle.HCENTER);
selectedLabel.setFontColor(Color.BLACK);
selectedLabel.setBackground(BackgroundFactory.createSolidBackground(0x00cccccc));
outerManager.add(selectedLabel);
HorizontalFieldManager innerManager = new HorizontalFieldManager();
innerManager.setPadding(0, 10, 0, 10);
innerManager.add(new ButtonField( "Button 1", ButtonField.CONSUME_CLICK | ButtonField.FIELD_RIGHT ));
innerManager.add(new ButtonField( "Button 2", ButtonField.CONSUME_CLICK | ButtonField.FIELD_RIGHT ));
innerManager.add(new ButtonField( "Button 3", ButtonField.CONSUME_CLICK | ButtonField.FIELD_RIGHT ));
innerManager.add(tab4);
innerManager.add(tab5);
outerManager.add(innerManager);
innerManager.setBackground(BackgroundFactory.createSolidBackground(0x00cccccc));
add(outerManager);我的代码中有什么问题?我怎样才能像上面那样设置一个屏幕?
发布于 2012-03-22 19:55:14
有几种方法可以实现你所要求的。一种方法是按照BBdev的建议使用setStatus()方法(它只适用于MainScreen类型的屏幕,而不适用于FullScreen类型的屏幕)。另一种选择是手动对齐底部。
需要记住的重要对齐规则:
下面是一段代码片段,它可以完成您所要求的操作。
public class UISandbox extends MainScreen {
public UISandbox() {
super(NO_VERTICAL_SCROLL | NO_HORIZONTAL_SCROLL | USE_ALL_HEIGHT | USE_ALL_WIDTH);
HorizontalFieldManager outerManager = new HorizontalFieldManager(USE_ALL_HEIGHT);
outerManager.setBackground(BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource("img/bghome.png")));
VerticalFieldManager innerMngr = new VerticalFieldManager(USE_ALL_WIDTH | FIELD_BOTTOM);
final LabelField selectedLabel = new LabelField("Hello World", FIELD_HCENTER) {
protected void paint(Graphics g) {
g.setColor(Color.BLACK);
super.paint(g);
}
};
selectedLabel.setBackground(BackgroundFactory.createSolidBackground(0x00cccccc));
innerMngr.add(selectedLabel);
GridFieldManager innerInnerMngr = new GridFieldManager(1, 3, USE_ALL_WIDTH);
innerInnerMngr.setPadding(10, 0, 10, 0);
innerInnerMngr.setColumnProperty(0, GridFieldManager.AUTO_SIZE, 0);
innerInnerMngr.setColumnProperty(1, GridFieldManager.AUTO_SIZE, 0);
innerInnerMngr.setColumnProperty(2, GridFieldManager.AUTO_SIZE, 0);
innerInnerMngr.add(new ButtonField("Button 1", ButtonField.CONSUME_CLICK | FIELD_HCENTER));
innerInnerMngr.add(new ButtonField("Button 2", ButtonField.CONSUME_CLICK | FIELD_HCENTER));
innerInnerMngr.add(new ButtonField("Button 3", ButtonField.CONSUME_CLICK | FIELD_HCENTER));
innerMngr.add(innerInnerMngr);
outerManager.add(innerMngr);
add(outerManager);
}
}发布于 2012-03-22 19:19:14
尝试在一个HorizontalFieldManager中添加所有按钮,并使用setStatus(添加按钮的hfmInwhich )。这将设置屏幕底部的按钮。并在setStatus之前添加labelField Hello world。就是这样。:)
https://stackoverflow.com/questions/9821154
复制相似问题