안녕하세요. 

오늘  TextView의  새로운 능력을 알았습니다.
이미 아시는 분들도 계시겠지만

저한테는  무지 중요한 기능이었는데,   오늘 우연히 찾았습니다.


인터넷에  다운 받을 수 있는   동영상들 보면, 
영화파일과  smi 라는  자막파일로  보통 돌아 다닙니다.

smi 자막 파일을 보면,  자막의  칼라를 지정하기 위해서  
html과 동일한 tag 형식으로 칼라나  bold 등의 속성을 넣어 준답니다.

그런데,   웹브라우져에는  이런것 출력하는 것이  별거 아니지만, 

그냥  App 에서  이것을 구현하려면 상당히 까다롭답니다. 


tag 자체가   사용자가 마음대로 만들 수 있기 때문에 
한 문장에서 모든 글자의  색이 다를 수도 있고,   단어별로 다를 수도 있답니다.


Win32 API 로  생각하면, 
DrawText 란 API는   이거 사용전에  font 지정을 해 주어야 하기 때문에요.

최악의 경우,  모든 글자에 대해서  font를 다시 지정해 주어야 하는  문제가 되거든요.




그런데,   안드로이드의  TextView 가   이런 기능을 자동으로 지원하네요 ^^




코드 먼저 볼까요? 

TextView vt2 = (TextView)findViewById(R.id.textview2);
vt2.setText(Html.fromHtml(getString(R.string.ftest)));

View의  textview2 라는 TextView를 하나 올려 두었습니다.   속성은  특별히 줄것이 없습니다. 


html tag가 들어간  문자을  Html.fromHtml 함수를  읽어서  setText로 전달해 주면 됩니다.


ftest 는 stringx.xml 에 넣어주었는데요. 이것을  어디가 되어든 중요하지 않구요.

<font color=aqua>나이지리아</font> <i>라고스</i> <font color="#80FF00">1928년</font><br><font color="#80FFFF">인도, 카라코람 산맥</font>

위 문장을 이클립스에서 넣어주면요.  xml 소스가 아니  string 값 넣어 주는 곳에서요.

<string name="ftest">&lt;font color=aqua&gt;나이지리아&lt;/font&gt; &lt;i&gt;라고스&lt;/i&gt; &lt;font color=&quot;#80FF00&quot;&gt;1928년&lt;/font&gt;&lt;br&gt;&lt;font color=&quot;#80FFFF&quot;&gt;인도, 카라코람 산맥&lt;/font&gt;</string>

이렇게  들어간답니다.

이렇게 넣어주고 실행하면요.

coloredtext.png

이렇게 보인답니다 ^^

수고하세요!