我不知道如何将字体样式应用于LabelField
Blackberry
中的文字。
答案 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