본문 바로가기
Android

TextView 특정 글자만 색상/크기 변경하기

by kkong93 2022. 5. 31.
반응형

https://developer.android.com/guide/topics/text/spans?hl=ko 

 

스팬  |  Android 개발자  |  Android Developers

스팬 스팬은 강력한 마크업 객체로 문자나 단락 수준에서 텍스트 스타일을 지정하는 데 사용할 수 있습니다. 텍스트 객체에 스팬을 연결하여 다양한 방식으로 텍스트를 변경할 수 있습니다. 예

developer.android.com

Span을 사용해 텍스트뷰 하나로 글자색상과 크기 밑줄 등등을 변경할 수 있다.

 

스팬은 강력한 마크업 객체로 문자나 단락 수준에서 텍스트 스타일을 지정하는 데 사용할 수 있습니다. 텍스트 객체에 스팬을 연결하여 다양한 방식으로 텍스트를 변경할 수 있습니다. 예를 들면 색상 추가, 텍스트를 클릭 가능하게 만들기, 텍스트 크기 조정, 맞춤설정 방식으로 텍스트 그리기 등이 있습니다. 스팬은 TextPaint 속성을 변경하고 Canvas에 그리며 텍스트 레이아웃까지 변경할 수도 있습니다.

Android는 다양한 일반 텍스트 스타일 지정 패턴을 다루는 여러 유형의 스팬을 제공합니다. 자체 스팬을 만들어 맞춤 스타일 지정을 적용할 수도 있습니다.

 

사용방법 - 색상 바꾸기

val spannable = SpannableStringBuilder("Text is spantastic!")
spannable.setSpan(
    ForegroundColorSpan(Color.RED),
    8, // start
    12, // end
    Spannable.SPAN_EXCLUSIVE_INCLUSIVE
)

 

ForegroundColorSpan으로 특정 글자에 색상을 입힐 수 있다.

띄어쓰기 포함해서 0부터 시작

 

 

사용방법 - 크기 변경

val string = SpannableString("Text with relative size span")
string.setSpan(RelativeSizeSpan(1.5f), 10, 24, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)

텍스트 측정항목에 영향을 미치는 스팬을 적용하면 관찰 객체가 올바른 레이아웃 및 렌더링을 위해 텍스트를 다시 측정하게 됩니다. 예를 들어 텍스트 크기가 변경되면 단어가 다른 줄에 표시될 수 있습니다. 위의 스팬을 적용하면 다시 측정, 텍스트 레이아웃 다시 계산, 텍스트 다시 그리기가 트리거됩니다. 이러한 스팬은 일반적으로 MetricAffectingSpan 클래스를 확장합니다. 이 클래스는 추상 클래스이며 TextPaint 액세스 권한을 제공하여 서브클래스가 스팬이 텍스트 측정에 미치는 영향을 정의할 수 있습니다. MetricAffectingSpan CharacterSpan을 확장하므로 서브클래스는 문자 수준에서 텍스트 모양에 영향을 미칩니다.

반응형

댓글