0

我创建了一个 Horizo​​ntalFieldManager 并在其中添加了 BitmapFields。

在 Blackberry Storm 中,Display.getWidth() 是 480。我想使用前 450 在屏幕的 LHS 添加一些 BitmapFields,我在运行时创建这些 BitmapFields,并在屏幕的 RHS 开始添加 2 个 BitmapFields。

我想在开始时显示的 2 个 BimapFields 添加到 Constructor 和我在运行时创建的其他 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]); }
 }  

我想要 RHS 的 startBitmapField 和 endBitmapField 和 bitmapField[i],我在运行时在 Horizo​​ntalFieldManagers 的 LHS 创建。

我正在考虑添加 2 个 Horizo​​ntalFieldManagers。1 表示 bitmapField[i] & 1 表示 startBitmapField 和 endBitmapField。但是如何连续添加 2 个 Horizo​​ntalFieldManager 或任何其他 FieldManager?

有什么解决办法吗?怎么做?

4

3 回答 3

5

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

于 2009-08-28T10:35:57.060 回答
2

而不是使用对齐标志尝试添加到您的子布局方法。

对于 Manager (hfm) 的每个孩子,您需要调用 setPositionChild。因此,如果您希望它正确对齐并垂直居中,您可以执行以下操作:

setPositionChild(deleteButton, hfm.getPreferredWidth() - deleteButton.getPreferredWidth(), (hfm.getPreferredHeight() / 2) - (deleteButton.getPreferredHeight() / 2));

这会将删除按钮的左上角设置在正确的位置,使其在 hfm 内右对齐并垂直居中。

于 2009-08-28T13:24:12.007 回答
0

如果您看到应用程序处于联系状态,就会出现问题。您必须将每个自定义字段放在单独的字段管理器中,以避免使用触摸事件。如果您使用 layoutChild 而不是 super.sublayout(width,height),这将禁用屏幕中的导航,因此请避免使用它。使用 navigationMovement 自定义您的字段导航。更多:如果你不使用 super.sublayout 函数,它可能不会布局你的某些字段,因此建议你使用它。

更多:为所有基于触摸的应用程序使用 Storm 模拟器,为所有其他版本使用 4.5 Pearl 模拟器 JDE,以解决兼容性问题。

于 2011-03-30T04:50:05.450 回答