2012-01-03 64 views
1

我想將徽標和文本字段居中放置在屏幕中間,既垂直又水平放置。達到此目的的最佳方法是什麼?如何使用水平字段在屏幕上居中放置標籤

我迄今已試圖與這個..

public upd8rMainScreen(){ 

    Bitmap logoBitmap = Bitmap.getBitmapResource("upd8rLOGO.png"); 
    bitmapField = new BitmapField(logoBitmap, Field.FIELD_VCENTER); 
    labelfield = new LabelField("Tap Your Phone Onto The Reader To Activate",Field.FIELD_VCENTER); 


    topHfm = new HorizontalFieldManager(Manager.VERTICAL_SCROLL); 
    middleHfm = new HorizontalFieldManager(Manager.VERTICAL_SCROLL); 

    vfm = new VerticalFieldManager(); 
    topHfm.add(bitmapField); 
    middleHfm.add(labelfield); 

    vfm.add(topHfm); 
    vfm.add(middleHfm); 
    add(vfm); 

} 
+1

嘗試添加樣式位**'Manager.FIELD_HCENTER' **與**一起' Manager.VERTICAL_SCROLL' **樣式位,即使用**'新的Horizo​​ntalFieldManager(Manager.VERTICAL_SCROLL | Manager.FIELD_HCENTER)'**。看到我今天早上發佈的答案[這裏](http://stackoverflow.com/questions/8707608/horizo​​ntally-centering-fields-in-a-vertical-field-manager),這可能會幫助你。 – 2012-01-03 11:32:32

回答

4

可能是它幫你試試這個

Bitmap logoBitmap = Bitmap.getBitmapResource("basket.png"); 
     bitmapField = new BitmapField(logoBitmap,Field.FIELD_HCENTER); 
     labelfield = new LabelField("Tap Your Phone Onto ",Field.FIELD_HCENTER); 
//  
     VerticalFieldManager vrt=new VerticalFieldManager(USE_ALL_WIDTH) 
     { 
      protected void sublayout(int maxWidth, int maxHeight) { 

       super.sublayout(Display.getWidth(),Display.getHeight()); 
       setExtent(Display.getWidth(),Display.getHeight()); 
      } 
     }; 
     Font f=labelfield.getFont(); 
     int hight1=f.getAdvance(labelfield.getText()); 
     int k=labelfield.getPreferredHeight(); 

     int number=hight1/Display.getWidth()+1; 
     int hight2=logoBitmap.getHeight(); 
     int padding=(Display.getHeight()-((number*k)+hight2))/2; 
     if(padding>0){ 
      bitmapField.setPadding(padding,0,0,0); 
     } 

     vrt.add(bitmapField); 
     vrt.add(labelfield); 

圖像顯示像下面

enter image description here

0

您可以嘗試重新設定保證金的VerticalFieldManager這樣

topHfm = new HorizontalFieldManager(Manager.FIELD_HCENTER | Manager.FIELD_VCENTER); 
midHfm = new HorizontalFieldManager(Manager.FIELD_HCENTER | Manager.FIELD_VCENTER); 

topHfm.add(bitmapField); 
midHfm.add(new LabelField("My Label", Manager.FIELD_HCENTER)); 

VerticalFieldManager vfm = new VerticalFieldManager(Manager.FIELD_VCENTER); 
vfm.add(topHfm); 
vfm.add(midHfm); 

int screenHeight = Display.getHeight(); 
int screenWidth = Display.getWidth(); 

int totalContentHeight = topHfm.getPreferredHeight()+ midHfm.getPreferredHeight(); 
int maxContentWidth = (topHfm.getPreferredWidth()>midHfm.getPreferredWidth()) ? topHfm.getPreferredWidth() : midHfm.getPreferredWidth() ; 

int marginTop = (screenHeight>totalContentHeight)? (screenHeight - totalContentHeight)/2 : 0; 
int marginLeft = (screenWidth>maxContentWidth)? (screenWidth - maxContentWidth)/2 : 0; 

vfm.setMargin(marginTop, 0, 0, marginLeft); 

add(vfm); 

我不聲稱這是「最好的方式」要做到這一點,但我希望它適用於你的情況。

相關問題