在Android Kotlin中使用原始WebView加载HTML时,可能会遇到标签中oss网络地址图片不显示的问题。这是因为WebView默认不支持加载网络图片,需要进行一些配置才能正确显示。下面是详细的解决办法:

  1. 在AndroidManifest.xml中添加Internet权限:
<uses-permission android:name="android.permission.INTERNET" />
  1. 创建一个自定义的WebViewClient,并重写shouldOverrideUrlLoading方法。在该方法中,判断加载的URL是否为网络图片地址,如果是,则使用自定义的方式加载图片:
class CustomWebViewClient : WebViewClient() {
    override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
        if (url != null && url.endsWith(".jpg") || url.endsWith(".jpeg") || url.endsWith(".png")) {
            view?.loadUrl("javascript:window.location=\"$url\"")
            return true
        }
        return super.shouldOverrideUrlLoading(view, url)
    }
}
  1. 在加载HTML的Activity中,设置WebView的WebViewClient为自定义的WebViewClient:
webView.webViewClient = CustomWebViewClient()
  1. 在HTML中,将标签的src属性值修改为data URL格式,并在前面添加"javascript:"前缀。例如:
<img src="javascript:data:image/png;base64,iVBORw0KG..." />

这样,就能够正确加载并显示网络图片了。注意,这种方式会将网络图片的内容以Base64编码的形式嵌入到HTML中,可能会增加HTML文件的大小。如果需要显示大量的网络图片,建议使用其他方式,如使用第三方图片加载库或自定义WebView,以提高性能和加载速度

Android kotlin 使用原始WebView加载Html img标签中oss网络地址图片不显示问题与详细解决办法

原文地址: https://www.cveoy.top/t/topic/iI8E 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录