怎么实现固定的field呢?很简单,如下:
1. 把screen的manager设置成Manager.NO_VERTICAL_SCROLL,我创建了一个basescreen,构造函数中首先调用
super(DEFAULT_MENU | DEFAULT_CLOSE | Manager.NO_VERTICAL_SCROLL);
2. 创建一个固定尺寸的manager,使其是该screen的一个成员,protected SizedVerticalFieldManager vManager = null;,
该manager必须是VERTICAL_SCROLL| VERTICAL_SCROLLBAR ,然后所有东西放这个manager里面。
public class SizedVerticalFieldManager extends VerticalFieldManager{
protected int width = 0;
protected int height = 0;
public SizedVerticalFieldManager(int width, int height){
super();
this.width = width;
this.height = height;
}
public SizedVerticalFieldManager(int width, int height, long style){
super(style);
this.width = width;
this.height = height;
}
public void SetSize(int width, int height){
this.width = width;
this.height = height;
invalidate();
}
public void SetWidth(int width){
this.width = width;
invalidate();
}
public void setHeight(int height){
if(height > 0)
{
this.height = height;
setExtent(getPreferredWidth(), getPreferredHeight());
}
}
protected void sublayout(int maxWidth, int maxHeight) {
// TODO Auto-generated method stub
super.sublayout(maxWidth, maxHeight);
this.setExtent(this.getPreferredWidth(), this.getPreferredHeight());
}
public int getPreferredHeight() {
// TODO Auto-generated method stub
return height == 0 ? super.getPreferredHeight() : height;
}
public int getPreferredWidth() {
// TODO Auto-generated method stub
return width == 0 ? super.getPreferredWidth() : width;
}
}
最后,可以创建你喜欢的toolbar,实际就是自定义一个HorizontalFieldManager,怎么定义根据自己喜好。添加到screen里面就ok了。如果toolbar放顶端,可以设置好toolbar的尺寸,然后剩余高度就留给你上面的manager吧。至于add的顺序就决定了你的toolbar的位置,不过要计算好尺寸哦。