ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TextView에서 볼드체 쓰기
    안드로이드/Tip 2011. 10. 27. 14:03
    TextView에서 볼드체를 표현하는 가장 간단한 방법은 다음과 같습니다.

    textView.setText(Html.fromHtml("<b>string</b>"));

    하지만 이 방법에는 약간의 오버헤드가 있습니다.
    ListView에서 사용되는 문자열에 볼드체를 사용하기 위해 이방법을 사용하면
    스크롤시 화면이 부드럽게 움직이지 않습니다. 
    모든 아이템에 미리 생성해논 문자열을 재사용한다면 문제 없겠지만 
    표현될 컨텐츠에 따라 변화되는 문자열이라면
    각 뷰마다 새로 생성된 문자열에 스타일을 적용하는 수밖에 없습니다.
    이말은 화면에 표시될 아이템의 갯수만큼 Html 클래스의 파싱 과정이 수행된다는 뜻입니다.
    결과적으로 파싱에 따른 오버헤드 때문에 스크롤이 부드럽지 않게 됩니다.

    이에 대한 대안으로 SpannableStringBuilder를 사용할 수 있습니다.
    사용법은 다음과 같습니다.

    SpannableStringBuilder sb = new SpannableStringBuilder();

    String str = "test";

    sb.append(str);

    sb.setSpan(new StyleSpan(Typeface.BOLD), 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    textView.setText(sb);


    사실 Html 클래스도 위와같은 방법을 사용합니다. 하지만 Html 태그를 사용하면 변환 과정에 더불어 파싱 과정이 추가되기 때문에 그만큼 오버헤드가 늘어납니다. 물론 문자열내에 다양한 스타일을 사용하는 경우 위의 방법으로 하나씩 스타일을 적용시키는 것보다 Html클래스가 효율적일 수 있습니다만 ListView 같은 경우 각 아이템마다 파싱 과정이 별도로 이루어지기 때문에 효율이 좋지 않다고 할 수 있겠습니다.
     
    원문 : http://anddev.tistory.com/49


    '안드로이드 > Tip' 카테고리의 다른 글

    객체지향 상속의 단점과 해법  (0) 2013.10.14
    네이트온 방화벽 우회  (0) 2013.10.07
    안드로이드 바탕화면 바로가기 추가  (0) 2011.12.15
    RGB 16진수 색상표  (1) 2011.12.05
    에자일 프랙티스  (0) 2011.10.18
    Intent 활용 TYPE 정리  (0) 2011.09.30
    스마트폰 계급도  (0) 2011.09.19
    안드로이드 OS 버전  (0) 2011.08.30
    Vertical Seekbar 응용  (0) 2011.08.18
    이것이 안드로이드의 구조  (0) 2011.08.09

    댓글

COPYRIGHT 2010 EpoNg. ALL RIGHTS RESERVED.