티스토리 뷰

Mobile/Android

[Android]Spannable

out of coding 2015. 3. 31. 12:24

안드로이드 Spannable에 대해서 알아봅시다.


TextView등에 텍스트와 함께 색상이나, 그림등을 넣어줄수 있는 기능인데요.

그냥 쉽게 텍스트와 기타 내용들이 포함되어 있는것이라고 생각하시면 되겠습니다.


사용방법은 다음과 같습니다.

setSpan(Object what, int start, int end, int flags)

removeSpan(Object what)


start는 Text를 0부터 시작, end는 Text를 1부터 시작해서 읽으면 됩니다.

AAAAAAA 라는 Text가 있을 경우, 2~4번째 Text를 선택하고 싶을 경우에는 setSpan(..., 1, 4)


Object에는 다음을 사용할수 있습니다.


ForegroundColorSpan

BackgroundColorSpan

UnderlineSpan

ClickableSpan

AbsoluteSizeSpan

ImageSpan

RelativeSizeSpan

StyleSpan

URLSpan

AlignmentSpan

BulletSpan

LeadingMarginSpan

LineHeightSpan

QuoteSpan

TabStopSpan

WrapTogetherSpan

SpanWatcher

기타 등등.


flag에는 다음속성을 넣을수 있습니다.


SPAN_앞속성유지여부_뒤속성유지여부

EXCLUSIVE 확장안함

INCLUSIVE 확장함


이렇게만 다른 분들도 적어놓아서, 한참을 찾아보고 테스트 하여 보았습니다.

아무튼 말은 맞습니다. 확장하는것과 안하는것...

이해를 잘 못하였던것은 Text를 다시 넣게되면 Spannable자체도 사라져 버리고 다시 하기 때문에 영향은 없습니다.


그렇지만 다음과 같은 코드로 개발을 하였다고 하면


SpannableStringBuilder builder = new SpannableStringBuilder("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");

builder.setSpan(new BackgroundColorSpan(0xffff0000), 7, 11, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

builder.setSpan(new StyleSpan(Typeface.ITALIC), 1, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

builder.setSpan(new UnderlineSpan(), 12, 17, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

builder.setSpan(new RelativeSizeSpan(0.5f), 12, 17, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

builder.setSpan(new ForegroundColorSpan(0xff0000ff), 12, 17, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

textView.setText(builder);


builder.insert(17, "CCCCC");

builder.insert(12, "DDDDD");

textView.setText(builder);


insert되어지는 포인트가 17입니다. 그런데 위에보면 UnderlineSpan에 사용된 뒤의 속성 INCLUSIVE때문에 뒤에 CCCCC가 insert되면서

Underline이 추가가 됩니다.


또한 insert되어지는 포인트가 12인데 앞쪽에 설정을 위지하는 부분은 색상을 변경하는 부분이죠.





특별한 상황이 아니라면 주로 EXCLUSIVE_EXCLUSIVE를 사용합니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함