【问题标题】:Load HTML data into WebView, referencing local images?将 HTML 数据加载到 WebView 中,引用本地图像?
【发布时间】:2012-03-19 13:12:45
【问题描述】:

如果我使用 WebView.loadData() 直接(没有 Web 服务器)加载带有 HTML 文档的 WebView,该文档是否可以引用本地图像?如果是,我应该将它们放在哪里,如何引用它们?

或者有没有一种方法可以轻松地将位图编码并嵌入到 HTML 文档中?

我需要显示包含图像的本地 HTML 文档,并且我想避免设置远程服务器来提供资源。

【问题讨论】:

  • 多少张图片?你试试AssetManager>
  • 我希望每个文档有 1-5 张图片,每个活动有一个文档和 WebView,所以不多。用 AssetManager 试过什么?
  • 我使用资产。在 assets 文件夹中我的 html 文件,在 assets/img 文件夹中 - 图像。 html 中的引用: ... ...

标签: android


【解决方案1】:

您是否尝试将file:///android_asset/www/image.jpg 作为图像src 属性?如果您将 html 文档作为文件,那么您可以将图像放入 assets 中文件旁边的文件夹中。

【讨论】:

  • 我不明白你的建议。您是说 file:///android_asset 允许 HTML 文档直接引用 APK 资产中的图像资源?
  • 这是一个猜测,在运行时修改资产中的某些内容是不可能的,但从资产中读取数据应该是可能的。
  • 类似的解决方案,但对我来说看起来更优雅(stackoverflow.com/a/6134462/285431):在 html 中使用 <img src="abc.gif" width="50px" alt="Hello"> 并使用 webview.loadUrl("file:///android_asset/abc.html"); 加载 html 文件
【解决方案2】:

使用这个

 String html = new String();
        html = ("<html><BODY  ><table  style='margin-top:100px;'  align='center'><tr><td><img src=\""+your_image_localpath+"\" width=\""+800+"px\" height=\""+800+"px\" ></td></tr></table> </BODY></html>" );

        webView1.loadDataWithBaseURL("file:///sdcard/data/data/your_package_name/",
               html,
               "text/html",
               "utf-8",
               "");

【讨论】:

  • 这看起来很混乱,因为它涉及将所有图像从资产复制到应用程序存储中。如果可能的话,我宁愿直接从应用中引用图像。
【解决方案3】:

如果您不关心图像并且它们只是 html 页面的一部分,则可以使用 base64 编码。

还有另一个线程解释了如何使用base64编码Embedding Base64 Images

【讨论】:

    【解决方案4】:

    我觉得这样更好更干净:

    StringBuilder html = new StringBuilder();
                        html.append("<html>");
                        html.append("<head>");
                        html.append("</head>");
                        html.append("<body>");
                        html.append("<p><img style='width: 100%;' src='your_image.png' /></p>");
                        html.append("</body></html>");
                        your_webview.loadDataWithBaseURL("file:///android_asset/", html.toString(), "text/html", "UTF-8", "");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多