webview의 loadData vs loadDataWithBaseUrl
결론 : loadDataWithBaseUrl은 base 주소(aaset위치 등)을 넣어 줄 수 있다. 파일이 로컬에 있을 때 asset폴더의 위치를 넣어 줄 수 있기 때문에 파일이 로컬에 있을 때 사용하면 될 듯.
val html = // html 소스
binding.webView.settings.javaScriptEnabled = true
binding.webView.setWebViewClient(WebViewClient())
val sb = StringBuilder()
sb.append("<HTML><HEAD><LINK href=\"https://어쩌구저쩌구.css\" type=\"text/css\" rel=\"stylesheet\"/></HEAD><body>")
sb.append(html)
sb.append("</body></HTML>")
binding.webView.loadData(sb.toString(), "text/html; charset=utf-8", "UTF-8")
StringBuilder html = new StringBuilder();
html .append("<HTML><HEAD><LINK href=\"css파일이름.css\" type=\"text/css\" rel=\"stylesheet\"/></HEAD><body>");
html .append(tables.toString());
html .append("</body></HTML>");
webView.loadDataWithBaseURL("file:///android_asset/", html.toString(), "text/html", "utf-8", null);
binding.webview.loadUrl("file:///android_asset/html파일이름.html")
//app/assets/sample.html
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sample Web Page</title>
<link rel="stylesheet" type="text/css" href="default.css" /> //css가 들어가있음
</head>
<body>
<h1>This is header one.</h1>
<h2>This is header two.</h2>
<h3>This is header three.</h3>
</body>
</html>
//app/assets/default.css
body{
background-color:#E3E3E3;
}
h1{
color:red;
background-color:pink;
}
h2{
color:green;
}
h3{
color:blue;
}
loadUrl, loadData, loadDataWithBaseUrl의 차이를 알고, html파일 css파일이 로컬에 있냐 없냐 이런 차이를 잘 생각해서 구현하면 될 것 같다.