본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] Spannable 너는 뭐 하는 녀석이냐?

by 돼지왕 왕돼지 2012. 2. 28.
반응형


안녕하세요 돼지왕 왕돼지입니다.

오늘은 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() );


로그인 없이 추천 가능합니다. 손가락 꾸욱~

반응형

댓글