2014-05-12 114 views
1

我試圖在垂直和水平中心垂直和水平的垂直領域管理器中的標籤。我已經成功地將它居中放置,但不是垂直放置。問題是沒有我嘗試過的樣式常量(Field.FIELD_VCENTER,DrawStyle.VCENTER等)。我得到了BlackBerry JRE 6的調試器,並開發了用於Bold 9900設備的調試器。誰能幫忙?在黑莓中水平和垂直居中標籤

VerticalFieldManager vfm_listeAeroport=new VerticalFieldManager (USE_ALL_WIDTH){ 
        protected void sublayout(int maxWidth, int maxHeight) { 
         super.sublayout(2*Display.getWidth()/3,70); 
         setExtent(2*Display.getWidth()/3,70); 
        } 
        protected void paint(Graphics g){ 
         super.paint(g); 
         setBackground(BackgroundFactory.createSolidBackground(0xefc94c)); 
        } 
       }; 
    String mText = "Liste des Aéroports"; 
    LabelField Label = new LabelField(mText,Field.FIELD_HCENTER) { 
      public void paint(Graphics graphics){ 
       graphics.setColor(0xffffff); 
        super.paint(graphics);   
        } 
       }; 
    vfm_listeAeroport.add(Label); 
    add(vfm_listeAeroport); 

謝謝!

回答

0

DrawStyle.VCENTER將文本置於標籤中,而不是在其管理器中。例如,labelfield的高度爲50px,管理器的高度爲100px,DrawStyle的中心位置爲50px。

我認爲FIELD_VCENTER不工作,因爲它在VerticalFieldManager之內。

在這種情況下,我只是設置標籤的邊距。

int margin_top = (Display.getHeight() - label.getPreferredHeight())/2; 
int margin_left = (Display.getWidth() - label.getPreferredWidth())/2; 
label.setMargin(margin_top,0,0,margin_left); 
0

只是評論凱文的建議解決方案,通過使用利潤率定位標籤,並​​設置基於屏幕的高度和寬度的邊緣。

凱文是100%正確的。 VerticalFieldManager只佔用盡可能多的垂直空間,而不是整個屏幕。使用setBackground設置不同的背景顏色以查看操作中的這一點。

凱文的解決方案使包含的標籤的大小更大,所以現在VFM將佔用更多的空間。

您不需要使用Kevin的解決方案設置左右邊距 - 正如您已經看到的,VFM將使用Field_HCENTER水平居中對齊事物。

Kevins的解決方案的問題,實際上任何試圖猜測需要多少空間的解決方案都是當屏幕上有其他東西時(例如標題區域或橫幅),它會失敗。問題是使用Display.getHeight(),它獲得所需的實際高度,而不是屏幕上的「空閒」空間。

當你知道可用空間的唯一時間是當字段佈局時。經理在他們的sublayout()方法中執行此操作。因此,要創建一個通用的「中心化」管理器,您需要了解如何創建管理器。您還需要了解更多關於MainScreen及其內部處理的信息。爲此,我提出以下建議KB文章從官方網站BB:

Custom Manager

Extend Manager

MainScreen explained