Уменьшить расстояние между 2 кнопками в HorizontalFieldManager в BlackBerry - PullRequest
0 голосов
/ 22 декабря 2010

В Blackberry я создал горизонтальный менеджер полей и добавил к нему несколько кнопок небольшого размера для отображения панели инструментов в нижней части экрана.Но моя проблема в том, что между двумя кнопками слишком много места.

Мне нужно уменьшить это пространство между двумя кнопками, чтобы я смог разместить как минимум 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)

Ответы [ 3 ]

2 голосов
/ 24 декабря 2010

setMargin (305,0,0,40) // = TOP, RIGHT, BOTTOM, LEFT

Запас относительно ближайшего объекта указанного значения.

Так простоуменьшение левого значения с 40 до чего-то меньшего должно позволить вам разместить больше объектов в горизонтальном поле.

Возможно, вы захотите взять (Display.getWidth () - (button.getWidth () * numButtons)) / numButtons + 1 для вычисления четного левого интервала.

1 голос
/ 24 декабря 2010

вы пытались использовать пользовательский менеджер, вы можете размещать содержимое по своему выбору, как это

Создать объект этого класса и добавить в него элементы

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);
         }
     }
0 голосов
/ 22 декабря 2010

Я не уверен, полностью ли я понимаю ваш вопрос. но если вы поместите все свои кнопки в HorizontalFieldManager, они все попытаются поместиться в один ряд, теперь вы можете установить поле для вашего HorizontalFieldManager, чтобы оно отображалось внизу или в определенной позиции x y. и затем добавьте это Manager к вашему HFM

...