【问题标题】:Reduce space between 2 buttons in HorizontalFieldManager in BlackBerry减少 BlackBerry Horizo​​ntalFieldManager 中 2 个按钮之间的空间
【发布时间】:2010-12-22 03:30:39
【问题描述】:

在 Blackberry 中,我创建了一个水平字段管理器,并在其中添加了一些小按钮以在屏幕底部显示工具栏。但我的问题是两个按钮之间的空间太大。

我必须减少 2 个按钮之间的空间,以便我可以设法在屏幕底部放置至少 6 个按钮。我正在使用BFmsg.setMargin(305,0,0,40) 语句。

以下是我的代码:

BFcontacts = new ButtonField("Cnt")
    { 
      protected void paint(Graphics graphics) 
         {
        //Bitmap contactsbitmap = Bitmap.getBitmapResource("contacts.jpg");
             //graphics.drawBitmap(0, 0, contactsbitmap.getWidth(), contactsbitmap.getHeight(), contactsbitmap, 0, 0);
             graphics.setColor(Color.WHITE);
             graphics.drawText("Cnt",0,0);
         }
    };


    BFcontacts.setMargin(305,0,0,10);//vertical pos,0,0,horizontal pos
    HFM.add(BFcontacts);

    BFmsg = new ButtonField("Msgs")
    { 
      protected void paint(Graphics graphics) 
         {
        //Bitmap msgsbitmap = Bitmap.getBitmapResource("messages.jpg");
             //graphics.drawBitmap(0, 0, msgsbitmap.getWidth(), msgsbitmap.getHeight(), msgsbitmap, 0, 0);
             graphics.setColor(Color.WHITE);
             graphics.drawText("Msgs",0,0);
         }
    };


    BFmsg.setMargin(305,0,0,40);//vertical pos,0,0,horizontal pos : original
    HFM.add(BFmsg);

   add(HFM)

【问题讨论】:

    标签: blackberry margins


    【解决方案1】:

    setMargin(305,0,0,40) // = 上、右、下、左

    边距相对于指定值的最近对象。

    因此,只需将左值从 40 减少到更小的值,就可以让您在水平场中容纳更多对象。

    您可能希望使用 (Display.getWidth() - (button.getWidth()*numButtons))/numButtons+1 来计算均匀的左边距。

    【讨论】:

      【解决方案2】:

      您是否尝试过使用自定义管理器,您可以像这样根据您的选择放置内容

      创建该类的对象并向其添加项目

      class BottomManager extends Manager
           {
               BottomManager()
               {
                   super(Manager.NO_VERTICAL_SCROLL);
               }
               protected void sublayout(int width, int height) 
               {
                   Field field = getField(0);
                   layoutChild(field,Display.getWidth(), Display.getHeight());
                   setPositionChild(field,0,0);
      
                   field = getField(1);
                   layoutChild(field,Display.getWidth(), Display.getHeight());
                   setPositionChild(field,10+getField(0).getWidth(),0);
      
                   field = getField(2);
                   layoutChild(field,Display.getWidth(), Display.getHeight());
                   setPositionChild(field,10+getField(1).getWidth(),0);
      
                   field = getField(3);
                   layoutChild(field,Display.getWidth(), Display.getHeight());
                   setPositionChild(field,getField(2).getWidth()+10,0);
      
                   setExtent(Display.getWidth(), 40);
               }
           }
      

      【讨论】:

        【解决方案3】:

        我不确定我是否完全理解您的问题。但是,如果您将所有按钮都放在HorizontalFieldManager 中,它们都会尝试排成一行,现在您可以将HorizontalFieldManager 的边距设置为显示在底部或某个 x y 位置。然后将此Manager 添加到您的HFM

        【讨论】:

          猜你喜欢
          • 2012-10-07
          • 2011-09-11
          • 1970-01-01
          • 1970-01-01
          • 2017-08-19
          • 2014-08-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多