본문 바로가기

Android/View

안드로이드/Android String에 Color를 입혀보자 (Textview Spannable 사용법)

안드로이드/Android String에 Color를 입혀보자 (Textview Spannable 사용법)



Textview에 입력한 문자열(String)에 색상(Color)를 입히고 싶다면 어떻게 해야 할까요? 바로 Spannable 객체를 사용해서 원하는 색상을 입힐 수 있습니다. 보통 xml에 Textview의 textcolor 속성을 이용해서 색상을 변경하게 되면 한가지 색으로 밖에 표현 할 수 없습니다.


하지만, 하나의 문자열에 여러가지 색상을 적용해야 하는 경우가 생기면 어떻게 해야 할까요? Textview를 여러개 만들어서 붙여야 할까요? 그렇게 되면 코드가 너무 지저분해 지겠죠!? 이럴경우 사용하는 객체가 바로 Spannable 입니다.


final SpannableStringBuilder sp = new SpannableStringBuilder("안녕하세요. 방갑습니다.");
//sp.setSpan(new ForegroundColorSpan(Color.rgb(255, 255, 255)), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
sp.setSpan(new ForegroundColorSpan(Color.RED), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.append(sp);


결과

 
 안녕하세요. 방갑습니다.


sp.setSpan(new ForegroundColorSpan(Color.RED), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) 여기에서 0, 3 index가 바로 색상을 적용할 문자열(Stirng)의 index 입니다. 색상을 적용할 문자열의 처음과 끝 index를 나타냅니다.


이런식으로 적용하셔서 원하는 색상의 문자열을(String)을 만드시기 바랍니다. 단 한가지 주의 하실점은 색상이 적용되는 문자열(String)의 index 인데요. String.substring() 메서드와 같이 index가 관리 됩니다.


 
  0  1   2  3   4 5 6 7   8   9  10 1112

 안 녕 하 세  요 .   방 갑  습 니  다 .


이런식으로 index의 시작은 0 부터 시작이되고 마지막 index(3)의 바로 앞 문자열(Stirng)까지만 적용 되게 되어 있습니다. 이점 유의하시면 적용하는데 큰 문제가 없을거라 생각 합니다. 아무쪼록 유용하게 사용하시기 바랍니다. 


아참 출처를 적어야 하는데 컴퓨터가 재부팅 되서 블로그가 사라졌네요.^^; 꼭 찾아서 출처 명시해 놓겠습니다. 감사합니다~~~~!!!



출처 : http://www.dingpong.net/tt/215