Development record of developer who study hard everyday.

레이블이 안드로이드 텍스트뷰 일부 변경인 게시물을 표시합니다. 모든 게시물 표시
레이블이 안드로이드 텍스트뷰 일부 변경인 게시물을 표시합니다. 모든 게시물 표시
, , , ,

안드로이드 텍스트뷰(TextView) 일부 부분 색 크기 변경

 안드로이드 텍스트뷰(TextView) 일부 부분 속성 변경

안드로이드 개발

회사에서 웹앱 프로젝트를 진행하다가 TextView에 일부 텍스트만 글자색을 다르게해야할 일이 생겼다.

여러개의 TextView를 사용해도되지만 그냥 공부도 할겸 구글링을 해보았다.


val content = binding.tutorialTitleBottom.text.toString()    //1

val spannableStringBuilder = SpannableStringBuilder(content)    //2

val purpleWord1 = "통신비 할인"    //3
val startIdx1 = content.indexOf(purpleWord1)    //4
val endIdx1 = startIdx1.plus(purpleWord1.length)

val purpleWord2 = "모빌카드 혜택"
val startIdx2 = content.indexOf(purpleWord2)
val endIdx2 = startIdx2.plus(purpleWord2.length)

val colorSpan1 = ForegroundColorSpan(Color.parseColor("#764CCB"))    //5
val colorSpan2 = ForegroundColorSpan(Color.parseColor("#764CCB"))
spannableStringBuilder.setSpan(colorSpan1, startIdx1, endIdx1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)    //6
spannableStringBuilder.setSpan(colorSpan2, startIdx2, endIdx2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)

binding.tutorialTitleBottom.text = spannableStringBuilder    //7

1 => 텍스트뷰의 글자를 가져온다,

2 => SpannableStringBuilder 객체를 만들어준다.

3 => 글자 속성을 변경할 텍스트를 정한다.

4 => 글자 속성을 변경할 텍스트의 인덱스(시작과 끝)을 정한다.

5 => 변경할 색상을 정한다.

6 => SpannableStringBuilder에 변경할 텍스트와 속성을 넣는다.

7 => SpannableStringBuilder를 텍스트뷰에 적용한다.


✋ TextView의 글자를 여러개 변경해줘야한다면 5에서처럼 ForegroundColorSpan을 각각 따로 만들어주어야한다!


✋ StyleSpan은 글자의 스타일(BOLD, ITALIC) / RelativeSizeSpan은 글자의 상대적 크기 변경

ex) 

spannableString.setSpan(new StyleSpan(Typeface.BOLD), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(new RelativeSizeSpan(1.3f), start, end, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);


Share:
Read More