안드로이드, Webview 에 Custom font 적용하기 |
구글링 해 본 결과, 안드로이드 2.1 버전에서는 버그로 이 방법이 적용 안 된다고 한다.
먼저 font file( TTF ) 은 asset 폴더에 넣는다.
<sample code>
private void initView(){
WebView webView = new WebView( this );
setContentView( webView );
String meta = "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>";
String style = "<style>@font-face {font-family: 'gamza';src: url('file:///android_asset/h.ttf');}body {font-family: 'gamza';}</style>"
String body = "<body><strong>감자! Strong </strong><br /><b>감자! Bold</b><br />감자! 그냥</body>";
String head = "<head>" + meta + style + "</head>";
String htmlContents = "<html>" + head + body + "</html>";
webView.loadDataWithBaseURL( "file:///android_asset/", htmlContents, "text/html", "utf-8", null );
}
핵심정리!
custom font 를 asset 에 두고, html page 에 이 font 를 style 로 연결시켜준다.
@font-face{
font-family: 'fontName';
src: url('file:///android_asset/fontName.ttf');
}
body{
font-family: 'fontName';
}
여기서 주의사항은 WebView 에 데이터를 연동시킬 때, font 를 불러올 context 를 맞춰줘야 한다.
즉, WebView.loadDataWithBaseURL () 의 첫번째 파라미터에 BaseURL 로 file:///android_asset/ 을 연결해줌으로서
context 를 맞춰주어야만 정상적으로 html 로딩이 가능하다.
그게 싫다면, html 파일 자체를 asset 에 동일하게 두는 방식으로 context 를 맞춰주어야 한다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] Webview font에 대한 실험결과 (0) | 2013.07.20 |
---|---|
[android] HttpResponseCache library (0) | 2013.07.20 |
[android] TextureView 에 대한 이야기 (0) | 2013.07.18 |
[android] Strict Mode 에 대해 알아보자. (0) | 2013.07.17 |
[andoid] AsyncTask vs. Handler + Thread (0) | 2013.07.16 |
댓글