Как установить шрифт для текста LabelField в Blackberry? - PullRequest
4 голосов
/ 09 июля 2009

Я не знаю, как применить стиль шрифта к тексту в LabelField в Blackberry.

Ответы [ 2 ]

21 голосов
/ 10 июля 2009

Вы можете просто использовать LabelField.setFont. Если вы не сделаете это явно в поле метки, поле будет использовать любой шрифт, используемый его менеджером (и так далее вверх по иерархии).

Есть несколько способов получить шрифт. Один из них - извлечь его из существующего шрифта (в этом случае я получаю жирную версию шрифта по умолчанию):

LabelField labelField = new LabelField("Hello World");
Font myFont = Font.getDefault().derive(Font.BOLD, 9, Ui.UNITS_pt);
labelField.setFont(myFont);

Другой способ - получить конкретное семейство шрифтов и извлечь из него шрифт (здесь получим шрифт курсивом 12 пт):

LabelField labelField = new LabelField("Hello World");
FontFamily fontFamily = FontFamily.forName("BBCasual");
Font myFont = fontFamily.derive(Font.ITALIC, 12, Ui.UNITS_pt);
labelField.setFont(myFont);

Несколько вещей, на которые следует обратить внимание: я использовал UNITS_pt (точки) вместо UNITS_px (пиксели). Как правило, это хорошая идея, поскольку устройства BlackBerry довольно сильно различаются по размеру и разрешению экрана (DPI), а использование точек даст вам более согласованный вид на разных устройствах, вместо того, чтобы текст выглядел крошечным на жирном или 8900 (или огромном на Кривая или Жемчужина).

Также во втором примере forName может выдать ClassCastException, который вы должны перехватить (это проверенное исключение), но на самом деле он никогда не генерируется в соответствии с Javadocs. Если вы укажете неизвестное имя, он откатится к другому шрифту семья.

9 голосов
/ 09 июля 2009

Вот пост, в котором есть ResponseLabelField, расширяющий LabelField и показывающий, как установить шрифт: http://supportforums.blackberry.com/rim/board/message?board.id=java_dev&thread.id=37988

Вот небольшой фрагмент кода для вас:

    LabelField displayLabel = new LabelField("Test", LabelField.FOCUSABLE)
    {
        protected void paintBackground(net.rim.device.api.ui.Graphics g)
        {
            g.clear();
            g.getColor();
            g.setColor(Color.CYAN);
            g.fillRect(0, 0, Display.getWidth(), Display.getHeight());
            g.setColor(Color.BLUE);               
        }
    };  

    FontFamily fontFamily[] = FontFamily.getFontFamilies();
    Font font = fontFamily[1].getFont(FontFamily.CBTF_FONT, 8);
    displayLabel.setFont(font);

Кто-то исправит меня, если я ошибаюсь, но я считаю, что разные шрифты выбираются с использованием другого индекса в массиве fontFamily.

РЕДАКТИРОВАТЬ: И вот тестовое приложение, которое вы можете использовать для переключения между шрифтами: http://blackberry -digger.blogspot.com / 2009/04 / how-to-change-fonts-in-blackberry.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...