我创建了一个HorizontalFieldManager&在那里添加了BitmapFields。
在Blackberry Storm中,Display.getWidth()是480.我想先使用450在屏幕的LHS处添加一些BitmapFields,这是我在运行时创建的。在屏幕的RHS处开始添加2个BitmapField。
我希望在开始时显示的2个BimapField在构造函数&中添加我在运行时创建的其他BitmapFields添加了像..之后的词。
class MyCanvas extends MainScreen
{
MyCanvas()
{
hfm_BitmapField = new HorizontalFieldManager(){
protected void sublayout(int maxWidth, int maxHeight) {
super.sublayout(maxWidth, maxHeight);
setExtent(Display.getWidth()-30, 60);
}
};
startBitmap = Bitmap.getBitmapResource("start.png");
startBitmapField = new BitmapField(startBitmap, BitmapField.ACTION_INVOKE | BitmapField.FIELD_HCENTER | BitmapField.FIELD_RIGHT);
hfm_BitmapField.add(startBitmapField);
endBitmap = Bitmap.getBitmapResource("end.png");
endBitmapField = new BitmapField(endBitmap, BitmapField.ACTION_INVOKE | BitmapField.FIELD_HCENTER | BitmapField.FIELD_RIGHT);
hfm_BitmapField.add(endBitmapField);
drawBitmap();
}
public void drawBitmap()
{
bitmap[i] = new Bitmap(50, 50);
Graphics g = new Graphics(bitmap[i]);
g.drawLine(5,5,25,25);
bitmapField[i] = new BitmapField(bitmap[i]);
synchronized(UiApplication.getEventLock()) { hfm.add(bitmapField[i]); }
}
我想要startBitmapField& RHS& amp; EndBitmapField bitmapField [i]我在运行时在HorizontalFieldManagers的LHS创建。
我想添加2个HorizontalFieldManagers。 1为bitmapField [i]& 1表示startBitmapField& endBitmapField。但是如何连续添加2个HorizontalFieldManagers或任何其他FieldManagers?
任何解决方案?怎么做?
答案 0 :(得分:5)
您可以将2个水平字段管理器放在另一个HorizontalFieldManager中。
答案 1 :(得分:2)
不要使用对齐标志,而是尝试添加到子布局方法。
对于Manager(hfm)的每个孩子,您需要调用setPositionChild。因此,如果您希望它对齐并垂直居中,您可以执行以下操作:
setPositionChild(deleteButton,hfm.getPreferredWidth() - deleteButton.getPreferredWidth(),(hfm.getPreferredHeight()/ 2) - (deleteButton.getPreferredHeight()/ 2));
这会将删除按钮的左上角设置在正确的位置,使其在hfm内右对齐并垂直居中。
答案 2 :(得分:0)
如果您看到应用程序处于联系状态,则会出现问题。您必须在单独的字段管理器中拥有每个自定义字段,以避免使用触摸事件。如果使用layoutChild而不是super.sublayout(宽度,高度),这将禁用屏幕中的导航,因此请避免使用它。使用navigationMovement自定义字段的导航。更多:如果您不使用super.sublayout函数,它可能不会布局您的某些字段,因此建议您使用它。
更多:针对所有基于触摸的应用程序使用Storm模拟器,针对所有其他版本使用4.5 Pearl模拟器JDE,以解决兼容性问题。