TextView에 입력되는 글자의 style을 바꾸거나 bitmap 등을 추가하고 싶을 경우
Style Span을 사용하여 해결 할 수 있음.
일단 Android developers site에서 확인하면
CharSequence를 상속받은 Spanned interface가 있고 이것을 상속받는 놈들 중 대표적인 것은 markup 처리를 위한 Spannable interface, text 처리를 위한 Editable interface 가 있다. (사실 자세한 차이를 모르겠다. textview에 html을 입력할때와 일반 character sequence를 입력할 때를 내부적으로 구분해서 처리하는 것 같은데.. 뭐 app 개발자는 SpannableString만 사용하면 되니..)
[Spanned]
: Spanned interface에 대한 설명, 그리고 Span 생성 시 사용되는 Constants 설명이 있음.
그리고 일반적으로 SpannableString을 만들기 위해서 SpannableStringBuilder가 있다.
[SpannableStringBuilder]
일단 StringBuilder로 text style을 설정하는 간단한 예제는 다음과 같음.
|
아래는 bitmap 추가하는 예제
SpannableStringBuilder sp = new SpannableStringBuilder("strings, strings");
Bitmap bp = DrawableBitmapCache.getBitmap(url, 500, 500);
sp.setSpan(new ImageSpan(context, bp), 5, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
사용할 수 있는 style span들은 아래 링크에 나열 되어 있음.
모든 Span에 대해서 설명은 없지만 googling 해보면 다 나올 듯.
AbsoluteSizeSpan | |
AlignmentSpan.Standard | |
BackgroundColorSpan | |
BulletSpan | |
CharacterStyle | The classes that affect character-level text formatting extend this class. |
ClickableSpan | If an object of this type is attached to the text of a TextView with a movement method of LinkMovementMethod, the affected spans of text can be selected. |
DrawableMarginSpan | |
DynamicDrawableSpan | |
EasyEditSpan | Provides an easy way to edit a portion of text. |
ForegroundColorSpan | |
IconMarginSpan | |
ImageSpan | |
LeadingMarginSpan.Standard | The standard implementation of LeadingMarginSpan, which adjusts the margin but does not do any rendering. |
LocaleSpan | Changes the Locale of the text to which the span is attached. |
MaskFilterSpan | |
MetricAffectingSpan | The classes that affect character-level text formatting in a way that changes the width or height of characters extend this class. |
QuoteSpan | |
RasterizerSpan | |
RelativeSizeSpan | |
ReplacementSpan | |
ScaleXSpan | |
StrikethroughSpan | |
StyleSpan | Describes a style in a span. |
SubscriptSpan | |
SuggestionSpan | Holds suggestion candidates for the text enclosed in this span. |
SuperscriptSpan | |
TabStopSpan.Standard | The default implementation of TabStopSpan. |
TextAppearanceSpan | Sets the text color, size, style, and typeface to match a TextAppearance resource. |
TypefaceSpan | Changes the typeface family of the text to which the span is attached. |
UnderlineSpan | |
URLSpan |
좀 더 자세한 실 예제는 아래를 참고하면 된다.
[TextView - SpannableStringBuilder 를 이용한 스타일 설정 |작성자 김동학]
[Introduction to Spans]