How to set a font to LabelField text in Blackberry?

时间秒杀一切 提交于 2020-01-11 19:49:33

问题


I don't know how to apply font style to a text in a LabelField in Blackberry.


回答1:


Here's a post which has a ResponseLabelField that extends LabelField and shows how to set the font: http://supportforums.blackberry.com/rim/board/message?board.id=java_dev&thread.id=37988

Here's a quick code snippet for you:

    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);

Someone correct me if I'm wrong, but I believe different fonts are chosen by using a different index into the fontFamily array.

EDIT: And here's a test app you can use to switch between fonts: http://blackberry-digger.blogspot.com/2009/04/how-to-change-fonts-in-blackberry.html




回答2:


You can just use LabelField.setFont. If you don't do this explicitly on the label field, the field will use whatever font is used by its manager (and so on upward up the hierarchy).

There are a couple of ways to get a font. One is to derive one from an existing font (in this case I'm getting a bold version of the default font):

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

The other is to get a specific font family and derive a font from that (here getting a 12 pt italic font):

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

A couple of things to note: I used UNITS_pt (points) instead of UNITS_px (pixels). This is a good idea generally since BlackBerry devices vary quite a bit in screen size and resolution (DPI) and using points will give you a more consistent look across devices, instead of having your text look tiny on a Bold or 8900 (or huge on a Curve or Pearl).

Also in the second example, forName can throw a ClassCastException which you have to catch (it's a checked exception) but is never actually thrown according to the Javadocs, if you specify an unknown name, it'll fall back to another font family.



来源:https://stackoverflow.com/questions/1103373/how-to-set-a-font-to-labelfield-text-in-blackberry

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!