SVG标签图像在Android WebView中无法显示

4

我正在使用Android WebView 在我的应用中显示XHTML文件。为了显示图片,我使用shouldInterceptRequest函数,但是当我尝试使用下面的代码时:

<svg xmlns="http://www.w3.org/2000/svg" height="100%" preserveAspectRatio="xMidYMid meet" version="1.1" viewBox="0 0 1478 2544" width="100%" xmlns:xlink="http://www.w3.org/1999/xlink">
  <image width="1478" height="2544" xlink:href="../Images/Antropoloji_Kapak_on_renk.jpg"></image>
</svg>

shouldInterceptRequest方法未被调用,图片无法显示。

我支持所有的Android 4+版本。

我不能更改内容。我应该准确地显示我所给的内容。

-编辑-

事实证明,当我给出的图片大小小于屏幕大小时,它会显示出来。

但我仍然希望即使图片大小超过屏幕大小,也能显示出来。


你正在运行哪个版本的Android平台? - ksasq
我在Android 4.1上进行了测试。 - Talha Büyükakkaşlar
SVG应该在4+中得到支持,尽管我不确定像这样的子元素的负载是否通过shouldInterceptRequest发送(尽管我认为它们应该是)。你确定图片存在吗?你可以尝试一些其他更基本的SVG元素来查看它们是否被绘制了吗? - ksasq
我确定图片存在,因为同样的文件在我编写的 iOS 版本应用程序中可以正常工作。 - Talha Büyükakkaşlar
这是通过 file:// URL 本地加载还是从远程服务器加载的? - ksasq
这个文件是本地添加的。我使用 shouldInterceptRequest 方法来返回响应。这个方法适用于图片标签和字体。 - Talha Büyükakkaşlar
2个回答

0

我使用以下 HTML 页面来显示你的 SVG:

<html>
<head>
<title>SVG Test</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">

</head>
<body>
    <svg xmlns="http://www.w3.org/2000/svg" height="100%"
        preserveAspectRatio="xMidYMid meet" version="1.1"
        viewBox="0 0 3288 2188" width="100%"
        xmlns:xlink="http://www.w3.org/1999/xlink">
        <image width="3288" height="2188"
            xlink:href="file:///android_asset/image.jpg"></image>
    </svg>
</body>
</html>

要在SVG中显示嵌入的图像,您应该使用带有file:///android_asset/前缀的路径。如果您想从其他位置嵌入图像而不是资产文件夹,则还应该使用file:///前缀。

我无法更改内容。我应该准确显示所给的内容。 - Talha Büyükakkaşlar
你的 SVG 主要错误在于使用了相对文件路径而非绝对路径。只需使用 file:///android_asset/image.jpg 即可。实际上,你需要在 SVG 的 href 属性中使用 URI。 - zed13

0

你的意思是你无法更改服务器的响应吗?

在这种情况下,您可以使用必要的<html><body>标签来包装<svg>标签

试试这个:

String svgContent = ... // Your code of svg here
String pageContent = "<html><head><meta charset='UTF-8'><meta name='viewport' content='width=device-width'></head><body>" + svgContent + "</body></html>";
webview.loadData(pageContent, "text/html", "utf-8");

你真的认为它不在HTML页面中吗? - Talha Büyükakkaşlar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接