Add loading html with css styles
This commit is contained in:
parent
f656676c12
commit
ea5320e57e
|
|
@ -137,6 +137,37 @@ open class BaseWebView @JvmOverloads constructor(
|
||||||
binding.webView.loadUrl(url ?: "", extraHeaders)
|
binding.webView.loadUrl(url ?: "", extraHeaders)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param htmlString raw html string to be loaded into WebView
|
||||||
|
* @param cssString raw css string to add styles
|
||||||
|
* @param cssFileName name for .css file which can be placed in assets folder
|
||||||
|
* @param styleDeps dependencies for styles which must be included into html,
|
||||||
|
* e.g. </link rel="preconnect" href="https://fonts.googleapis.com"/>
|
||||||
|
*/
|
||||||
|
fun loadHtmlContent(
|
||||||
|
htmlString: String,
|
||||||
|
cssString: String = "",
|
||||||
|
cssFileName: String = "",
|
||||||
|
styleDeps: String = ""
|
||||||
|
) {
|
||||||
|
val indexOfHead = htmlString
|
||||||
|
.indexOf("</head>", ignoreCase = true)
|
||||||
|
.takeIf { it != -1 } ?: 0
|
||||||
|
|
||||||
|
val styledHtml = StringBuilder(htmlString)
|
||||||
|
.insert(indexOfHead, styleDeps)
|
||||||
|
.insert(indexOfHead, "<style>$cssString</style>")
|
||||||
|
.insert(indexOfHead, "<link href=\"$cssFileName\" type=\"text/css\" rel=\"stylesheet\"/>")
|
||||||
|
|
||||||
|
getWebView().loadDataWithBaseURL(
|
||||||
|
"file:///android_asset/".takeIf { cssFileName.isNotEmpty() },
|
||||||
|
styledHtml.toString(),
|
||||||
|
"text/html",
|
||||||
|
"utf-8",
|
||||||
|
null
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fun setState(newState: WebViewLoadingState) {
|
fun setState(newState: WebViewLoadingState) {
|
||||||
onStateChanged(newState)
|
onStateChanged(newState)
|
||||||
}
|
}
|
||||||
|
|
@ -157,6 +188,8 @@ open class BaseWebView @JvmOverloads constructor(
|
||||||
scrollBarStyle = View.SCROLLBARS_INSIDE_OVERLAY
|
scrollBarStyle = View.SCROLLBARS_INSIDE_OVERLAY
|
||||||
setLayerType(View.LAYER_TYPE_HARDWARE, null)
|
setLayerType(View.LAYER_TYPE_HARDWARE, null)
|
||||||
with(settings) {
|
with(settings) {
|
||||||
|
allowContentAccess = true
|
||||||
|
allowFileAccess = true
|
||||||
loadsImagesAutomatically = true
|
loadsImagesAutomatically = true
|
||||||
javaScriptEnabled = true
|
javaScriptEnabled = true
|
||||||
domStorageEnabled = true
|
domStorageEnabled = true
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue