2013년 1월 31일 목요일

[Android] Spannable 객체 사용

Span 새로 맞춘 문자서식, 문단서식, 이미지 정보등 문자열 표현하는 용어나 어떤 동작이나 행위로 인해 추가로 전달하는 정보를 말한다.

안드로이드에서는 스타일 문자를 처리하는 기능을 갖고 있는 클래스들은 공통적으로 Span이라하는 영문명이 접두어 또는 접미어로 들어간다.

◆String.xml
<?xml version=”1.0” encoding=”utf-8”?>
<resources>
<string name=”style_text_1”>This is bold! and This is highlighted!</string>
</resources>

◆Java Code
 private void spannable() {
  TextView tv = (TextView) findViewById(R.id.tv);
  Spannable sp = tv.getEditableText();
  sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  sp.setSpan(new BackgroundColorSpan(Color.GREEN), 18, 37, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
 }
  • Spannable  sp는 Editable 로 받을 수 있기때문에 tv.setText() method 대신tv.getEditableText() method를 사용 하였다.
  • StyleSpan Class 는 문자열의 속성을 변경 할 수 있으며 위 소스는 android.graphics.Typerface.BOLD 처리 한것이다.
  • BackgroundColorSpan Class는 문자열의 백그라운드를 설정 할수 있다.

◆Span 객체들
 private void spannable(){
   TextView tv = (TextView) findViewById(R.id.tv);
   
   SpannableString ss = new SpannableString("When in Rome do as the Romans do.");
   ss.setSpan(new RelativeSizeSpan(0.5f), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
   ss.setSpan(new ForegroundColorSpan(Color.RED), 0, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
   ss.setSpan(new AbsoluteSizeSpan(30), 6, 11, 0);
   ss.setSpan(new StrikethroughSpan(), 13, 18, 0);
   tv.setText(ss, BufferType.SPANNABLE);
  }
  • RelativeSizeSpan(0.5f) : 폰트 사이즈를 변경하는 Class 이다.
  • ForegroundColorSpan(Color.RED) : 폰트의 색상을 변경하는 Class 이다. 
  • AbsoluteSizeSpan(30) : 폰트의 크기를 물리적인 크기로 변경하는 Class 이다.
  • StrikethroughSpan() : 해당 문자를 삭제한 형태로 표기한다.
  • 이 외에 URLSpan 이라는 클래스도 있다. 기능은 링크 연결을 한다.(인터넷, 전환연결 등)

관련글

댓글 없음:

댓글 쓰기