Как я могу вертикально расположить заголовок на Blackberry? - PullRequest
0 голосов
/ 29 ноября 2011

Я пытаюсь сделать дизайн как на картинке: 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 с небольшим размером текста, но поля всегда имеют одинаковую высоту.

Как установить текст или любое другое поле в вертикальном центре?

1 Ответ

2 голосов
/ 29 ноября 2011

Проблема, которую вам нужно решить, это «Как менеджер центрирует вертикально и горизонтально любое поле, добавляемое к нему». Попытка решить эту проблему для N полей, добавленных в Manager, может быть немного сложной, но только для одного поля, это должно быть довольно легко. Я предлагаю вам попробовать это:

 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...