BlackBerry вертикально по центру LabelField с пользовательской высотой - PullRequest
1 голос
/ 25 мая 2011

У меня есть LabelField, вложенный в строку TableLayoutManager.Я хочу, чтобы строка была определенной высоты (такой же высоты, как ее растровый фон).Чтобы добиться этого, я изменил метод layout () вложенного LabelField:

LabelField lblHours = new LabelField(hours,
            Color.BLACK, Manager.FIELD_VCENTER) {
        protected void layout(int width, int height) {
            super.layout(width, 40 //height of the bitmap);
            setExtent(width, 40 //height of the bitmap);
        }
    };

Это успешно увеличило размер строки TableLayoutManager.Однако, как только я это сделаю, LabelField больше не будет центрироваться вертикально внутри строки.Любые предложения о том, как это сделать?

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 сентября 2011

Приведенный выше ответ работает, просто убедитесь, что вы добавили два утверждения для вышеуказанного ... как показано в приведенном ниже примере.ребята .. для обсуждения.Это помогло мне.

0 голосов
/ 25 мая 2011

Попробуйте изменить setExtent(width, 40) на setExtent(this.getWidth(), 40). Это может не сработать, если getWidth () пытается занять всю доступную ширину (что и делает ваш вызов setExtent ()), и так как текст будет отрисован по левому краю, он выглядит так, как будто ваше поле не ' по центру, но на самом деле это просто занимает всю клетку вашего стола. Кроме того, если это не сработает, вы можете сделать setExtent(Math.min(width, this.getFont().getAdvance(this.getText())), 40);

...