Simple.
Сделайте метод адаптера следующим образом.
@JvmStatic
@BindingAdapter("htmlString")
fun loadHTML(view: WebView, htmlString: String) {
if(htmlString.isEmpty()){
return
}
try{
view.webChromeClient = WebChromeClient()
view.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
super.onPageFinished(view, url)
}
override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean {
return false
}
}
view.loadData(htmlString, "text/html", "UTF-8")
}catch (ex: Exception){
A35Log.e(TAG, "Error loading html string")
}
}
Затем используйте его в своем XML-коде следующим образом.
<WebView
android:id="@+id/wvHtml"
android:layout_width="match_parent"
android:layout_height="match_parent"
bind:htmlString="@{viewModel.infoModel.hTML}"
/>
Если вы не используете привязку данных и хотите просто использовать код, просто возьмите код из примера адаптера и загрузите его прямо в веб-просмотр. Однако привязка данных и адаптеры - это очень хороший способ сохранить код чистым и небольшим.
Наконец, в круговой диаграмме он перестал разрешать загрузку http-трафика (очистить трафик) по умолчанию. Поэтому, если по какой-либо причине загрузка не удалась, вам, возможно, придется добавить в приложение тег, чтобы разрешить загрузку незащищенного HTML. Я не уверен, что загрузка вашей собственной строки HTML считается «небезопасной» или нет, но это может произойти.
<application
...
android:usesCleartextTraffic="true">
</application>