로컬 html/css로 웹뷰 만들기

나고수·2022년 3월 6일
0

1일1공부

목록 보기
11/67

webview의 loadData vs loadDataWithBaseUrl
결론 : loadDataWithBaseUrl은 base 주소(aaset위치 등)을 넣어 줄 수 있다. 파일이 로컬에 있을 때 asset폴더의 위치를 넣어 줄 수 있기 때문에 파일이 로컬에 있을 때 사용하면 될 듯.

  • html , css가 로컬파일 아닐 때 (나는 html은 api로 받아왔고, css는 css url를 사용했다.)
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")
       
  • css가 로컬파일 일 때 (css를 asset폴더에 넣어둬야한다.)
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파일이 로컬에 있냐 없냐 이런 차이를 잘 생각해서 구현하면 될 것 같다.

profile
되고싶다

0개의 댓글