안드로이드에서는 스타일 문자를 처리하는 기능을 갖고 있는 클래스들은 공통적으로 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는 문자열의 백그라운드를 설정 할수 있다.
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 이라는 클래스도 있다. 기능은 링크 연결을 한다.(인터넷, 전환연결 등)