如何在blackberry中向自定义verticalfieldmanager添加任何字段?
我的自定义垂直场管理器如何在blackberry中向自定义verticalfieldmanager添加任何字段?,blackberry,Blackberry,我的自定义垂直场管理器 public class Custom_TopField extends VerticalFieldManager { private static final int FIELD_HEIGHT = 70; private LabelField maintitle; private String _text; Custom_TopField(int color, String text) { super(Manager.NO_VERTICAL_SCROLL);
public class Custom_TopField extends VerticalFieldManager {
private static final int FIELD_HEIGHT = 70;
private LabelField maintitle;
private String _text;
Custom_TopField(int color, String text) {
super(Manager.NO_VERTICAL_SCROLL);
_text = text;
Background background = BackgroundFactory.createSolidBackground(color);
setBackground(background);
maintitle = new LabelField(_text, Field.FIELD_VCENTER | Field.FIELD_HCENTER);
Font font = Font.getDefault().derive(Font.BOLD, 35);
maintitle.setFont(font);
add(maintitle);
}
protected void sublayout(int width, int height) {
width = Math.min(width, getPreferredWidth());
height = Math.min(height, getPreferredHeight());
setExtent(width, height);
}
public int getPreferredHeight() {
return FIELD_HEIGHT;
}
public int getPreferredWidth() {
return Display.getWidth();
}
public void paint(Graphics graphics) {
int rectHeight = getPreferredHeight();
int rectWidth = getPreferredWidth();
graphics.drawRect(0, 0, rectWidth, rectHeight);
super.paint(graphics);
}
}
虽然我添加了(主标题),但它没有出现在垂直字段的中间。您可以尝试以下操作:
向构造函数添加标志:
super(Manager.NO_VERTICAL_SCROLL | Manager.USE_ALL_WIDTH);
也适用于现场:
maintitle = new LabelField(DrawStyle.HCENTER | Field.FIELD_HCENTER);
这应该水平居中于场地中心。您也可以尝试将标志添加到垂直居中,但很可能不起作用,因为VFM的垂直滚动有问题。规则是:要水平居中,请使用垂直字段管理器
;要垂直居中,请使用水平字段管理器
。这是垂直居中的方式:
HorizontalFieldManager hfm = new HorizontalFieldManager(Manager.USE_ALL_HEIGHT);
Field toCenter = new <Field>(DrawStyle.VCENTER | Field.FIELD_VCENTER );
hfm.add(toCenter);
HorizontalFieldManager hfm=新的HorizontalFieldManager(Manager.使用所有高度);
字段到中心=新建(DrawStyle.VCENTER | Field.fieldvCenter);
hfm.add(toCenter);
从理论上讲,您可以结合这两种方法,将一个管理器嵌套在另一个管理器中。管理器是否需要只包含一个水平和垂直居中的
LabelField?