2012-06-07 50 views
0

我想在具有圖像和一個字符串在屏幕的底部添加一個欄顯示的圖像,我想有間距像黑莓UI在底部

IMG1串IMG2同樣| IMG3,這是怎樣的底部欄應該看起來像下面的代碼是不正確的我正在gettign對齊和最後一個iamge正在消失。

HorizontalFieldManager horizontalFieldManager = new HorizontalFieldManager(
       FIELD_BOTTOM) { 
      public void paint(Graphics graphics) { 
       graphics.setBackgroundColor(0x316AC5); 
       graphics.clear(); 
       super.paint(graphics); 
      } 
     }; 
     Bitmap fadeBitmap = Bitmap 
       .getBitmapResource("GE_TimeZone_Fade_blue.PNG"); 
     Bitmap clockBitmap = Bitmap.getBitmapResource("GE_Cal_icon_blue.PNG"); 
     Bitmap tzBitmap = Bitmap 
       .getBitmapResource("GE_TimeZone_Button_blue.PNG"); 

     final ImageButtonField unfocus = new ImageButtonField("", 
       Field.FOCUSABLE | FIELD_LEFT, "GE_TimeZone_Fade_blue.PNG", 
       "GE_TimeZone_Fade_blue.PNG", 0xFFFFFF); 
     LabelField test = new LabelField("hello"); 
     final ImageButtonField bitmapField = new ImageButtonField("", 
       Field.FOCUSABLE | FIELD_HCENTER, "GE_Cal_icon_blue.PNG", 
       "GE_Cal_icon_onSelect.PNG", 0xFFFFFF); 

    final ImageButtonField bitmapField1 = new ImageButtonField("", 
      Field.FOCUSABLE | FIELD_RIGHT, "GE_TimeZone_Button_blue.PNG", 
      "GE_TimeZone_Btn_OnSelect.PNG", 0xFFFFFF); 

    int margin = ((Display.getWidth() - (fadeBitmap.getWidth() 
      + clockBitmap.getWidth() + tzBitmap.getWidth() + test 
      .getWidth()))/4); 

    unfocus.setMargin(0, margin, 0, 0); 
    test.setMargin(0, margin, 0, 0); 
    bitmapField.setMargin(0, margin, 0, 0); 
    bitmapField1.setMargin(0, margin, 0, 0); 

    horizontalFieldManager.add(unfocus); 
    horizontalFieldManager.add(test); 
    horizontalFieldManager.add(bitmapField); 
    horizontalFieldManager.add(bitmapField1); 

    this.setStatus(horizontalFieldManager); 

回答

0

試試這個 -

unfocus.setMargin(0, margin, 0, 0); 
test.setMargin(0, 10, 0, 0); 
bitmapField.setMargin(0, 10, 0, 0); 
bitmapField1.setMargin(0, 10, 0, 0); 
1

有您所使用的代碼中的問題。檢查以下行。

int margin = ((Display.getWidth() - (fadeBitmap.getWidth() 
      + clockBitmap.getWidth() + tzBitmap.getWidth() + test 
      .getWidth()))/4); 

getWidth()任何FieldgetHeight()如果它的佈局方法的父經理被調用將返回有效值。 因此,使用getWidth(),getHeight()調整邊距並不安全。

但是可以通過延伸HorizontalFieldManager來控制Field的對齊和位置。檢查以下代碼並輸出,以瞭解如何完成此操作。

輸出

enter image description here

使用StatusFieldManager:

StatusFieldManager statusFieldManager = new StatusFieldManager(); 
statusFieldManager.setBackground(BackgroundFactory.createSolidBackground(0x316AC5)); 

final Bitmap bmTest = Bitmap.getBitmapResource("bitmap.png"); 

BitmapField bmOne = new BitmapField(bmTest, Field.FOCUSABLE | FIELD_LEFT); 
BitmapField bmTwo = new BitmapField(bmTest, Field.FOCUSABLE | FIELD_LEFT); 
BitmapField bmThree = new BitmapField(bmTest, Field.FOCUSABLE | FIELD_LEFT); 
LabelField lblTest = new LabelField("Test"); 

statusFieldManager.add(bmOne); 
statusFieldManager.add(lblTest); 
statusFieldManager.add(bmTwo); 
statusFieldManager.add(bmThree); 

setStatus(statusFieldManager); 

StatusFieldManager

class StatusFieldManager extends HorizontalFieldManager { 
    protected void sublayout(int width, int height) { 
     int numField = getFieldCount(); 
     Field f; 
     int nHeight = 0, maxFieldWidth = width/4; 
     if (numField == 4) { 
      f = getField(0); 
      layoutChild(f, maxFieldWidth, height); 
      nHeight = Math.max(nHeight, f.getHeight()); 

      f = getField(1); 
      layoutChild(f, maxFieldWidth, height); 
      nHeight = Math.max(nHeight, f.getHeight()); 

      f = getField(2); 
      layoutChild(f, maxFieldWidth, height); 
      nHeight = Math.max(nHeight, f.getHeight()); 

      f = getField(3); 
      layoutChild(f, maxFieldWidth, height); 
      nHeight = Math.max(nHeight, f.getHeight()); 

      // set position of the child fields 
      int x = 0, y = 0; 
      int requiredFieldWidth = 0; 
      for (int i=0;i<numField;i++) { 
       requiredFieldWidth += getField(i).getWidth(); 
      } 
      int spaceBetweenFields = (width - requiredFieldWidth)/(numField - 1); 

      for (int i=0;i<numField;i++) { 
       setPositionChild(getField(i), x, (nHeight - getField(i).getHeight())/2); 
       x += getField(i).getWidth() + spaceBetweenFields; 
      } 
      setExtent(width, nHeight); 

     } else { 
      setExtent(0, 0); 
     } 
    } 
} 
的實現