System.out.println("Hello, World");


TextView의 디폴트 버퍼 타입은 normal이므로 스팬을 배치할려면 buffertype 속성을 spannable로 지정해야 한다. EditText의 디폴트 버퍼 타입은 편집을 지원하는 editable이므로 별 지정이 없어도 스팬을 배치할 수 있다.


위와 같이 XML을 설정해준다.



실행하게 되면 위와 같은 화면처럼 출력된다. 

이제 이것들을 bufferType을 이용하여 다 잘라낼것이다.




위 코딩 내용중 1~7까지는 기울임, 8 ~ 11까지는 빨간색 배경, 12 ~17까지는 밑줄 속성을 부여한다.


에디트 스팬에는 다양한 플래그를 지정하였다. 플래그는 SPAN_앞쪽확장여부_뒤쪽확장여부 식으로 되어 있는데 스팬의 경계 부분에 새 문자가 입력 될때 스팬의 확장 여부를 제정한다. 

EXCLUSIVE이면 확장되지 않고 INCLUSIVE이면 확장된다. 


espan.setSpan(new StyleSpan(Typeface.ITALIC), 1, 7,

Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);


ITALIC체는 둘다 제외이므로 앞뒤로 새 문자를 삽입해도 기울임 속성이 적용되지 않는다. 


espan.setSpan(new BackgroundColorSpan(0xffff0000), 8, 11,

Spannable.SPAN_INCLUSIVE_INCLUSIVE);


RED는 둘다 포함이므로 앞뒤로 새 문자를 삽입할때 빨간색으로 삽입된다. 


espan.setSpan(new UnderlineSpan(), 12, 17,

Spannable.SPAN_EXCLUSIVE_INCLUSIVE);


UnderLine은  앞은 미포함이고 뒤에는 포함이므로 뒤에는 밑줄이 적용된다.



BufferType

 buffertype 속성

설명 

 NORMAL

normal 

단순한 문자열이며 읽기 전용이다. 

SPANNABLE 

spannable 

문자열에 부가 정보를 같이 기록한다. 

EDITABLE 

editable 

편집 가능한 문자열이다. 


setSpan 메서드는 문자열의 start와 end 오프셋 사이에 스팬 정보를 설정한다. 설정 대상 정보의 종류가 워낙 많고 사용자가 정의할 수 도 있기 때문에 서식 인수는 Object 타입으로 받는다. 



Posted by 김마농