본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android/안드로이드] TextView 중간에 이미지 삽입하기.

by 돼지왕 왕돼지 2012. 2. 8.
반응형


안녕하세요 돼지왕왕돼지입니다.
오늘은 TextView 의 중간에 간단한 이미지를 삽입하는 방법을 함께 알아보고자 합니다.


Html class 에서 제공하는 아래의 API 를 이용하면 쉽게 구현할 수 있습니다.

public static Spanned fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)


이 함수는 html 태그를 작성하면, 그것이 해석된 버전의 text 가 나오는 것으로 보시면 되겠습니다.
이 함수는 주로 <img> 태그를 이용하여 text 중간에 이미지를 넣는 데 이용됩니다.
Return 값으로 전달되는 Spanned 는 CharSequence 를 implements 한 녀석이기 때문에 TextView의 setText() 의 parma 으로 들어갈 수 있습니다.

Spanned 의 Developer 를 보면 markup objects 를 가진 interface 라고 되어 있습니다.
따라서, <img> 태그를 통한 image object 를 가질 수 있는 것이지요.
 
예를 한번 볼까요?

ImageGetter imageGetter = new ImageGetter() {

@Override

public Drawable getDrawable(String source) {

if ( source.equals( "icon" ) ){

Drawable drawable = getResources().getDrawable( R.drawable.icon ); 

drawable.setBounds( 0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight() );

return drawable;

}

return null;

}
}; 

Spanned htmlText = Html.fromHtml( "test <img src=\"icon\" width=50 height=50> test", imageGetter, null };
textView.setText( htmlText ); 
 
 원래 HTML은 img src가 인터넷 주소이거나, 해당 html 이 위치해있는 폴더를 기준으로 주소를 찾곤 하죠.
하지만 우리가 하고 싶은 것은, 우리가 가진 resource를 보여주는 것이기 때문에 위와 같이 ImageGetter 를 구현해야 합니다.
ImageGetter의 param인 source에는 <img src="[소스]"> 의 [소스] text 가 들어옵니다.
위와 같이 구미에 맞도록 링크시켜주면 되겠습니다.

 



로그인 없이 추천 가능합니다. 손가락 꾸욱~





반응형

댓글