如何在黑莓手机上垂直居中?

时间:2011-11-29 08:11:14

标签: blackberry

我正在努力制作如图所示的设计: requaered design

如您所见,在屏幕的顶部栏中间有一个标题。我可以将它设置为水平中心,但如何将其设置为垂直中心?

我已经尝试过了:

  • 覆盖RichTextField以使其自定义大小。它适用于widht,但不适用于身高。
  • 覆盖水平/垂直字段管理器,使其具有垂直中心化的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总是具有相同的高度。

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

1 个答案:

答案 0 :(得分:2)

您需要解决的问题是“管理器如何垂直居中,水平居中任何添加到其中的字段”。尝试为添加到Manager的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);