我对黑莓非常陌生,并试图制作一个自定义管理器。所以我试图让布局变得非常简单,它将显示两个标签字段。(我可以很容易地通过将它们都放在 HorizontalFieldManager 中来获得这个,但我需要使用自定义管理器来做到这一点。)
输出应该是这样的: -Hello(FirstField) User(SecondField)
这是我班级中的子布局方法,它扩展到 Manager
public MyManager() {
// construct a manager with vertical scrolling
super(Manager.VERTICAL_SCROLL);
}
protected void sublayout(int width, int height) {
Field field;
// get total number of fields within this manager
int numberOfFields = getFieldCount();
int x = 0;
int y = 0;
for (int i = 0; i < numberOfFields; i++) {
field = getField(i); // get the field
setPositionChild(field, x, y); // set the position for the field
layoutChild(field, width, height); // lay out the field
x = x + field.getHeight();
}
setExtent(width, height);
}
如果我删除此行x = x+field.getWidth();
,那么两个文本(Hello User)将重叠(我认为这是因为 x,y = 0)现在我希望我field.getWidth()
将返回字段一使用的宽度,而是给出我显示的宽度(这是我的想法)所以我只能在我的布局中看到 Hello。
对于垂直定位项目,它可以正常使用y = y+field,getHeight();
但不知道为什么getWidth
没有返回正确的宽度值,可能是我误导了某个地方来理解这个问题。
我需要重写getPrefferedWidth()
方法吗?我也试过这个并保持这种方法不变,但它只在两个字段之间留下几个空格(2-3),其他文本重叠。