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

4

我不知道如何在BlackberryLabelField中应用字体样式。

请注意,保留了HTML标签。
2个回答

21

您可以直接使用LabelField.setFont方法。如果在标签字段上不显式执行此操作,则该字段将使用其管理器(以及层次结构向上)使用的任何字体。

获取字体有几种方法之一是从现有字体派生一个(在这种情况下,我正在获取默认字体的粗体版本):

LabelField labelField = new LabelField("Hello World");
Font myFont = Font.getDefault().derive(Font.BOLD, 9, Ui.UNITS_pt);
labelField.setFont(myFont);
另一种方式是获取特定字体系列并从中派生出字体(这里获取一个12 pt斜体字体):

另一个方法是获取特定的字体系列,并从中派生出字体(例如获取一个12pt的斜体字体):

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上显得非常小(或者在Curve或Pearl上显得非常大)。

另外,在第二个示例中,forName可能会抛出ClassCastException异常,需要进行捕获(它是一个已检查的异常),但根据Javadocs的说明,实际上从未发生过。如果您指定了未知的名称,它将回退到另一个字体系列。


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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接