0

Blackberry で、水平フィールド マネージャーを作成し、小さいサイズのボタンをいくつか追加して、画面の下部にツールバーを表示しました。しかし、私の問題は、2 つのボタンの間にスペースがありすぎることです。

画面の下部に少なくとも 6 つのボタンを配置できるように、2 つのボタン間のこのスペースを縮小する必要があります。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)
4

3 に答える 3

2

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

マージンは、指定された値の最も近いオブジェクトに相対的です。

したがって、単純に左の値を 40 から小さい値に減らすだけで、より多くのオブジェクトを水平フィールドに収めることができます。

おそらく、(Display.getWidth() - (button.getWidth()*numButtons))/numButtons+1 を使用して、均等な左余白の間隔を計算することをお勧めします。

于 2010-12-24T05:50:19.463 に答える
1

カスタムマネージャを使用してみましたか?このように選択したとおりにコンテンツを配置できます

このクラスのオブジェクトを作成し、それにアイテムを追加します

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);
         }
     }
于 2010-12-24T11:45:03.153 に答える
0

あなたの質問を完全に理解しているかどうかわかりません。ただし、すべてのボタンを配置するHorizontalFieldManager と、すべてが 1 つの行に収まるようになります。これHorizontalFieldManagerで、下部または特定の xy 位置に表示するマージンを設定できます。そして、これManagerをあなたに追加しますHFM

于 2010-12-22T07:44:26.153 に答える