2012-03-22 68 views
0

我的努力實現一個屏幕象下面這樣:與FIELD_BOTTOM黑莓概率在Horizo​​ntalFieldManager

enter image description here

對於這一點,我使用下面的代碼。它根本不工作。

HorizontalFieldManager outerManager = new HorizontalFieldManager(FIELD_BOTTOM|USE_ALL_HEIGHT); 
     outerManager.setBackground(BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource("img/bghome.png"))); 

final FCLabelField selectedLabel = new FCLabelField("Hello World", LabelField.USE_ALL_WIDTH | DrawStyle.HCENTER); 

selectedLabel.setFontColor(Color.BLACK); 
selectedLabel.setBackground(BackgroundFactory.createSolidBackground(0x00cccccc)); 
outerManager.add(selectedLabel); 

HorizontalFieldManager innerManager = new HorizontalFieldManager(); 

innerManager.setPadding(0, 10, 0, 10); 


innerManager.add(new ButtonField("Button 1", ButtonField.CONSUME_CLICK | ButtonField.FIELD_RIGHT)); 
innerManager.add(new ButtonField("Button 2", ButtonField.CONSUME_CLICK | ButtonField.FIELD_RIGHT)); 
innerManager.add(new ButtonField("Button 3", ButtonField.CONSUME_CLICK | ButtonField.FIELD_RIGHT)); 
innerManager.add(tab4); 
innerManager.add(tab5); 

outerManager.add(innerManager); 

innerManager.setBackground(BackgroundFactory.createSolidBackground(0x00cccccc)); 

add(outerManager); 

我的代碼有什麼問題?我如何設置上面的屏幕?

回答

2

有幾種方法可以實現您提出的問題。一種方法是使用setStatus()方法BBdev提示(它只能用於MainScreen類型的屏幕,並且不會對類型FullScreen的屏幕工作)。另一種替代方法是手動對齊到底部

重要排列規則要記住:

  • 一個Horizo​​ntalFieldManager只能垂直對齊的字段。將字段添加到水平管理器時,只有這些對齊樣式有效:FIELD_TOP,FIELD_VCENTER,FIELD_BOTTOM。

  • VerticalFieldManager只能水平對齊字段。將字段添加到垂直字段管理器時,只有這些對齊樣式纔會生效:FIELD_LEFT,FIELD_HCENTER,FIELD_RIGHT。

這是一個代碼片段,可以完成你所要求的功能。

public class UISandbox extends MainScreen { 
    public UISandbox() { 
     super(NO_VERTICAL_SCROLL | NO_HORIZONTAL_SCROLL | USE_ALL_HEIGHT | USE_ALL_WIDTH); 

     HorizontalFieldManager outerManager = new HorizontalFieldManager(USE_ALL_HEIGHT); 
     outerManager.setBackground(BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource("img/bghome.png"))); 

     VerticalFieldManager innerMngr = new VerticalFieldManager(USE_ALL_WIDTH | FIELD_BOTTOM); 
     final LabelField selectedLabel = new LabelField("Hello World", FIELD_HCENTER) { 
      protected void paint(Graphics g) { 
       g.setColor(Color.BLACK); 
       super.paint(g); 
      } 
     }; 
     selectedLabel.setBackground(BackgroundFactory.createSolidBackground(0x00cccccc)); 
     innerMngr.add(selectedLabel); 

     GridFieldManager innerInnerMngr = new GridFieldManager(1, 3, USE_ALL_WIDTH); 
     innerInnerMngr.setPadding(10, 0, 10, 0); 
     innerInnerMngr.setColumnProperty(0, GridFieldManager.AUTO_SIZE, 0); 
     innerInnerMngr.setColumnProperty(1, GridFieldManager.AUTO_SIZE, 0); 
     innerInnerMngr.setColumnProperty(2, GridFieldManager.AUTO_SIZE, 0); 
     innerInnerMngr.add(new ButtonField("Button 1", ButtonField.CONSUME_CLICK | FIELD_HCENTER)); 
     innerInnerMngr.add(new ButtonField("Button 2", ButtonField.CONSUME_CLICK | FIELD_HCENTER)); 
     innerInnerMngr.add(new ButtonField("Button 3", ButtonField.CONSUME_CLICK | FIELD_HCENTER)); 

     innerMngr.add(innerInnerMngr); 
     outerManager.add(innerMngr); 
     add(outerManager); 
    } 
} 
2

嘗試在一個HorizontalFieldManager中添加所有按鈕,並使用setStatus(您已添加按鈕的hfmIn)。這將在屏幕底部設置按鈕。並在setStatus之前添加labelField Hello world。而已。 :)

+0

如何設置背景圖片? – 2012-03-22 11:31:31

+0

'的setBackground(BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource(圖像路徑)))';試着在經理上打電話給他。 – BBdev 2012-03-22 11:33:50

+0

,你要設置的背景,因此只是做一個HFM給它所需的高度和使用上面的代碼上經理,並添加您的setStatus()之前; – BBdev 2012-03-22 11:35:24