2012-08-05 33 views
1

我將文本作爲多行放入LabelField中。這是我打電話的方法:LabelField中的多種格式 - BlackBerry

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 
     } 

我想每行的不同字體(大小,樣式等)。是否有可能在一個labieldield中使用多格式。請幫忙。

回答

2

你不能用LabelField做到這一點,只有RichTextField。您必須構建用於該字段的偏移量,字體和字體索引的數組。這有點乏味,但並不特別困難。要使用的方法是

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

其中:

  • offsets是位置的排序後的數組,其中格式更改,包括文本的開始(0)和結束(text.length());
  • attributes是指向fonts數組的索引數組,每個文本區域一個(offsets.length == attributes.length + 1);
  • fonts是您要使用的不同字體的數組。

attributes陣列可包含相同的值超過一次,所以fonts.length可以是任何東西,只要attributes每個元素是fontsnull元素的有效指標。

+0

感謝特德的答覆。據我所知,偏移量是指定字體更改效果的位置。考慮到我有一個文本:String richText = fvalue +「\ n」+ lvalue +「\ n」+ date +「\ n」+ lastStatus; int offset [] = {0,5,richText.length()};我應該如何爲偏移量指定位置,在「0」之後的下一個位置是字符串中的下一行? – Sarah 2012-08-05 05:58:34

+0

它應該像'fvalue.length()+ 1','fvalue.length()+ lvalue.length()+ 2'等 – 2012-08-05 06:59:16

+0

@Sarah - 如果你想第一行是在不同的字體,然後該變化的偏移應該在結束第一行的'\ n'之後,這將是(像Eugen所說的)'fvalue.length()+ 1'(而不是現在的'5')。如果'fonts [0]'是第一行的字體,'fonts [1]'是其餘文本的字體,則聲明'byte [] attributes = {0,1}'。 – 2012-08-05 07:50:00