在Blackberry Storm中连续显示水平字段管理器中的位图字段的问题

时间:2009-08-28 10:32:13

标签: user-interface blackberry blackberry-storm rim-4.7

我创建了一个Horizo​​ntalFieldManager&在那里添加了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]我在运行时在Horizo​​ntalFieldManagers的LHS创建。

我想添加2个Horizo​​ntalFieldManagers。 1为bitmapField [i]& 1表示startBitmapField& endBitmapField。但是如何连续添加2个Horizo​​ntalFieldManagers或任何其他FieldManagers?

任何解决方案?怎么做?

3 个答案:

答案 0 :(得分:5)

您可以将2个水平字段管理器放在另一个Horizo​​ntalFieldManager中。

答案 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,以解决兼容性问题。