html태그들을 String으로 가지고 있을 경우 loadData(data, mimeType, encoding); 함수를 통해 사용합니다.
String data = "<h5>가나다라마</h5>";
wv.loadData(data, "text/html", "UTF-8");
5-1 O.S 버전별 HTML출력방법
안드로이드의 경우에 이상하게 4.0 미만 버전과 4.0이상 버전의 경우 loadData()함수의 사용방법이 다릅니다.
위의 방법처럼 'wv.loadData(data, "text/html", "UTF-8");' 방법도 있지만
wv.loadData(data, "text/html; charset=UTF-8", null); 방법으로도 사용 해야 합니다.
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// Android 4.0 미만 버전
wv.loadData(data, "text/html", "UTF-8");
Log.d("TTTT","Webview load < 4.0");
}
else{
// Android 4.1 이상 버전
wv.loadData(data, "text/html; charset=UTF-8", null, null);
Log.d("TTTT","Webview load >= 4.0");
}
6. 상대 주소 베이스 주소 설정하기
상대 주소를 처음엔 어떻게 대응할지 몰라서 String을 replace()함수를 이용해서 앞부분에 주소를 삽입했었는데...
그럴 필요 없이 안드로이드에서 이미 제공합니다.
아래는 5-1 방법처럼 O.S 버전별로 적용되게 코딩 해본 방법입니다.
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// Android 4.0 이하 버전
wv.loadDataWithBaseURL("http://sungho0459.blog.me/", data, "text/html", "UTF-8", null);
Log.d("TTTT","Webview load < 4.0");
}
else{
// Android 4.1 이상 버전
wv.loadDataWithBaseURL("http://sungho0459.blog.me/", data, "text/html; charset=UTF-8", null, null);
Log.d("TTTT","Webview load >= 4.0");
}
7. 웹뷰 WrapContent로 꽉차게 하기
Webview Fill WrapContents
웹뷰를 가변 사이즈(WrapContent)로 설정해서 불러올 웹페이지의 전체 사이즈 만큼 길게 하고 싶을 때 사용하는 방법입니다.
WebViewClient객체를 생성해서 설정해 줍니다. onPageFinished()함수를 오버라이드 해줍니다.
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(final WebView view, final String url) {
super.onPageFinished(view, url);
/*
* 화면꽉찬 WebView로 바꾸기
*
* invalidate를 안해주게 되면
* webview에 스크롤바만 생기게 되서 화면이 보기 안좋게 되어 버린다.
* 그러므로 꼭 invalidate를 해줘야 한다.
*/
wv.invalidate();
}
});
8. 링크 클릭시 연결 관리
링크 클릭시에 클릭한 url을 판단하여 추가적인 액션을 취할 수 있다.
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("TTTT","WebView load url:"+url);
if(url.startsWith("http:"))
{
Intent i = new Intent(mContext, ActivityCatchWebView.class);
i.putExtra("url", url);
i.putExtra("name", item.getP_Name());
startActivity(i);
웹 주소로 연결된 홈페이지가 PC버전 밖에 존재하지 않아서 모바일에서 보게 될때
컨텐츠 사이즈가 넘쳐서 확대되 보이는 경우가 존재합니다.
이럴 때 쓰는 코드가 아래의 코드지만, 최신버전 SDK에서는 지원하지 않는 함수가 되어 버렸습니다.
일단 땜빵용으로 쓰시라고 올려드립니다 ㅋㅋ;