2012-08-05 2 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 
     } 

각 줄마다 다른 글꼴 (크기, 스타일 등)을 원합니다. 한 개의 labelfield에서 다중 형식을 사용할 수 있습니까? 도와주세요.

답변

2

RichTextField으로 만 LabelField으로 설정할 수 없습니다. 필드에 사용할 오프셋, 글꼴 및 글꼴 인덱스의 배열을 만들어야합니다. 약간 지루하지만 특히 어려운 것은 아닙니다. 사용하려는 방법은

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

입니다 :

  • offsets이 위치의 정렬 된 배열입니다 텍스트의 시작 (0)과 끝 (text.length())을 포함하여 서식 변경;
  • attributes은 각 텍스트 영역 (offsets.length == attributes.length + 1)에 대해 하나 인 fonts 배열에 대한 인덱스 배열입니다.
  • fonts은 사용하려는 다른 글꼴의 배열입니다. attributes의 모든 요소가 fonts의 비 null 소자의 유효 인덱스로

attributes 배열 한, 모든 때문에 fonts.length 될 수있는 일을 한 번 이상 동일한 값을 더 포함 할 수있다.

+0

Ted에게 답장을 보내 주셔서 감사합니다. 필자가 이해하는 바와 같이, 오프셋은 글꼴 변경 효과를 지정하는 위치입니다. 내가 텍스트를 가지고 있다고 생각하면 : String richText = fvalue + "\ n"+ lvalue + "\ n"+ date + "\ n"+ lastStatus; int offset [] = {0,5, richText.length()}; "0"다음의 다음 위치가 문자열의 다음 줄인 오프셋 위치를 어떻게 지정해야합니까? – Sarah

+0

'fvalue.length() + 1','fvalue.length() + lvalue.length() + 2' 등)와 같아야합니다. –

+0

@Sarah - 첫 번째 줄을 다른 글꼴로 바꾸려면, 변경 사항에 대한 오프셋은 첫 번째 줄을 끝내는'\ n' 다음에 있어야합니다 (예 : Eugen이 말한 것처럼)'fvalue.length() + 1' (지금처럼 '5' 대신). 'fonts [0]'이 첫번째 행의 폰트이고'fonts [1]'이 나머지 텍스트의 폰트 인 경우'byte [] attributes = {0, 1}'을 선언하십시오. –