반응형
안녕하세요 돼지왕 왕돼지입니다.
오늘은 Spannable 에 대해 알아볼까 합니다.
Spannable 너는 뭐 하는 녀석이냐?
: 이녀석은 일반 문자열의 확장판이라고 보시면 되겠습니다. 문자열 + 부가정보 = Spannable 입니다. API 의 사용과 워드를 함께 상상해보시면, 뭐 하는 녀석인지 이해하시기가 더 편한데요, 워드에서 블럭을 씌운 후에 색상이나 font size 등을 부분 변경하는 작업. 이 작업을 도와주는 것이 Spannable 이라고 보시면 되겠습니다.
BufferType.SPANNABLE 이며, xml로 정의시에 android:bufferType="spannable"
<APIs>
void setSpan (Object what, int start, int end, int flags) // start에서 end사이에 스팬정보
void removeSpan (Object what)
<Object what>
<CharacterStyle>
ForegroundColorSpan / BackgroundColorSpan / UnderlineSpan / ClickableSpan / AbsoluteSizeSpan / ImageSpan / RelativeSizeSpan / StyleSpan / URLSpan
<ParagraphStyle>
AlignmentSpan / BulletSpan / LeadingMarginSpan / LineHeightSpan / QuoteSpan / TabStopSpan / WrapTogetherSpan
<TextWatcher>
SpanWatcher
<flags>
flags = SPAN_앞쪽속성유지여부_뒤쪽속성유지여부
EXCLUSIVE 확장 X / INCLUSIVE 확장 O
예제를 봐야 이해가 빠를 것 같네요.
EditText edit = (EditText)findViewById(R.id.edit);
Spannable espan = edit.getText();
espan.setSpan(new StyleSpan(Typeface.ITALIC), 1, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
espan.setSpan(new BackgroundColorSpan(0xffff0000), 8, 11, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
esapn.setSpan(new UnderlineSpan(), 12, 17, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
esapn.setSpan(new RelativeSizeSpan(0.5f), 12, 17, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
esapn.setSpan(new ForegroundColorSpan(0xff0000ff), 12, 17, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
TextView link = (TextView)findViewById(R.id.textlink);
Spannable lspan = (Spannable)link.getText();
URLSpan profile = new URLSpan(""){
public void onClick(View v){
// To Do
}
}
lspan.setSpan(profile, 10, 13, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
URLSpan call = new URLSpan(""){
public void onClick(View v){
// To Do
}
}
lspan.setSpan(call, 18, 21, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
link.setMovementMethod( LinkMovementMethod.getInstance() );
로그인 없이 추천 가능합니다. 손가락 꾸욱~
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] Spinner ( 스피너 ) 에 대해 알아봅니다. ( with sample code ) (0) | 2012.02.28 |
---|---|
[Android/안드로이드] Editable 은 무엇인가? (0) | 2012.02.28 |
[Android/안드로이드] TextView 속성들 ( Attributers ) 에 대해 알아본다. (0) | 2012.02.28 |
[Android/안드로이드] EditText 속성 ( Attributes )에 대해 알아봅니다. (5) | 2012.02.28 |
[Android/안드로이드] ADB (Android Debug Bridge) 기본 명령어들 (0) | 2012.02.28 |
댓글