如何在Blackberry中将字体设置为LabelField文本?

时间:2009-07-09 11:53:09

标签: blackberry

我不知道如何将字体样式应用于LabelField Blackberry中的文字。

2 个答案:

答案 0 :(得分:21)

您可以使用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(像素)。这是一个好主意,因为黑莓设备的屏幕尺寸和分辨率(DPI)变化很大,并且使用积分可以让您在设备上看起来更加一致,而不是让您的文字在Bold或8900上看起来很小(或者说很大曲线或珍珠)。

同样在第二个示例中,forName可以抛出一个必须捕获的ClassCastException(它是一个已检查的异常),但是根据Javadocs实际上从未抛出,如果指定一个未知名称,它将回退到另一种字体家族。

答案 1 :(得分:9)

这是一篇帖子,其中有一个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