2011-11-29 56 views
0

我试图做一个类似的设计在图片: requaered design我怎样才能在黑莓上垂直居中?

,你可以看到,在屏幕的顶部栏有在中心的称号。我可以将其设置为水平中心,但是如何将其设置为垂直中心?

我媒体链接tryed:

  • 覆盖RichTextField,使其自定义大小。它适用于widht,但不是高度。
  • 覆盖水平/垂直场经理与垂直centrizing custon高度,使之,但没有奏效:

    VerticalFieldManager vfm = new VerticalFieldManager(); 
        HorizontalFieldManager hfm = new HorizontalFieldManager(Field.FIELD_VCENTER){ 
         protected void sublayout(int maxWidth, int maxHeight) 
         { 
          super.sublayout(Display.getWidth(), 50); 
         } 
        }; 
        LabelWithCustomSize title = new LabelWithCustomSize("ENTERTAINMENT",Field.NON_FOCUSABLE,Display.getWidth(),50,30,2); 
        hfm.add(title); 
        vfm.add(hfm); 
    
  • 添加小的文字大小的空RichTextField,但fiels八方通具有相同的高度。

如何在垂直中心设置文本或其他字段?

回答

2

您需要解决的问题是“管理员如何垂直和水平放置任何添加到其中的字段”。试图解决这个问题的N个字段添加到管理器可能有点涉及,但只是一个领域,它必须是很容易的。我建议你试试这个:

VerticalFieldManager vfm = new VerticalFieldManager(){ 
     public void sublayout(int maxWidth, int maxHeight) 
     { 
      int margin = 0; 
      int lheight = 0; 
      Field f = getField(0); 
      margin = f.getMarginBottom()+f.getMarginTop(); 
      layoutChild(f, maxWidth-margin, maxHeight); 
      int w = f.getWidth(); 
      int h = f.getHeight(); 
      lheight = h+margin; 
      int x = (maxWidth - w)/2; 
      int y = (maxHeight -h)/2; 
      setPositionChild(f, x, y); 
      setExtent(maxWidth, lheight); 
     } 
    }; 
    vfm.add(field); 
+0

你的代码有问题:f(Field)没有setPositionChild方法。我尝试了“这个”而没有“f”,但是在所有情况下都没有领域。 – SentineL

+0

哎呀!抱歉,管理员可以使用setPositionChild。我正在编辑答案 –

+0

然后回复,但我已经尝试过了。 setPositionChild(f,x,y);等于this.setPositionChild(f,x,y);就像我知道的......我对这两件事都保持着诚挚的态度,以防万一,但是我伤心的时候,没有出现过场地 – SentineL