我不知道如何在Blackberry
的LabelField
中应用字体样式。
我不知道如何在Blackberry
的LabelField
中应用字体样式。
您可以直接使用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的说明,实际上从未发生过。如果您指定了未知的名称,它将回退到另一个字体系列。
这是一篇带有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