【问题标题】:multi format in LabelField - BlackBerryLabelField 中的多格式 - BlackBerry
【发布时间】:2012-08-05 13:38:08
【问题描述】:

我将文本作为多行放置在 LabelField 中。这是我正在调用的方法:

public void setFirstName(String fvalue,String lvalue,String date,String lastStatus) 
        {
            _fnameLabel.setText(fvalue+" "+lvalue+"\n"+date+"\n"+lastStatus);
            _fnameLabel.setFont((_fnameLabel.getFont().derive(Font.BOLD, 20, Ui.UNITS_px,
                    Font.ANTIALIAS_STANDARD, Font.COLORED_OUTLINE_EFFECT)));
            _fnameLabel.setMargin(10, 0, 20, 0); //To leave some space from top and bottom
        }

我希望每一行都有不同的字体(大小、样式等)。是否可以在一个标签字段中具有多种格式。请帮忙。

【问题讨论】:

    标签: blackberry labelfield


    【解决方案1】:

    LabelField 无法做到这一点,只能使用 RichTextField。您必须构建用于该字段的偏移量、字体和字体索引数组。这有点乏味,但不是特别难。您要使用的方法是

    setText(String text, int[] offsets, byte[] attributes, Font[] fonts)
    

    地点:

    • offsets 是一个排序数组,其中包含格式更改的位置,包括文本的开头 (0) 和结尾 (text.length());
    • attributesfonts 数组的索引数组,每个文本区域都有一个索引 (offsets.length == attributes.length + 1);
    • fonts 是您要使用的不同字体的数组。

    attributes 数组可以包含多次相同的值,所以fonts.length 可以是任何东西,只要attributes 的每个元素都是@ 的非null 元素的有效索引987654335@.

    【讨论】:

    • 感谢泰德的回复。据我了解,偏移量是要指定字体更改效果的位置。考虑到我有一个文本:String richText = fvalue+"\n"+lvalue+"\n"+date+"\n"+lastStatus; int offsets[] ={0,5,richText.length()};我应该如何指定偏移量的位置,“0”之后的下一个位置是字符串中的下一行?
    • 应该是fvalue.length() + 1fvalue.length() + lvalue.length() + 2
    • @Sarah - 如果您希望第一行使用不同的字体,那么更改的偏移量应该在结束第一行的 \n 之后,这将是(就像 Eugen 所说)fvalue.length() + 1(而不是像现在这样的5)。如果fonts[0] 是第一行的字体,fonts[1] 是其余文本的字体,则声明byte[] attributes = {0, 1}
    • 感谢指点。我试过这样,但它抛出 NullPointerException。字符串richText = fvalue+"\n"+lvalue+"\n"+date+"\n"+lastStatus; int offsets[] = {fvalue.length()+1, fvalue.length() + lvalue.length() + 2, fvalue.length() + lvalue.length() + date.length() + 3, fvalue.长度() + lvalue.length() + date.length() + lastStatus.length() +4};字节属性[] = {0,1,2,3};我想为每一行指定不同的字体。
    • @Sarah - 由于您的属性索引从 0 到 3,您是否在 fonts 数组中定义了四种字体?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多