SVG标签图片未见Android webview

时间:2014-03-20 15:20:57

标签: android svg webview xhtml

我使用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方法未调用且图片无法显示

iam支持所有版本的android 4 +

我无法更改内容。 我应该准确显示我给出的内容

-edit -

当我给出的图像尺寸小于显示它的屏幕

时,结果证明了这一点

但即使它比屏幕尺寸大,我仍想展示它

2 个答案:

答案 0 :(得分: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:///”前缀。

答案 1 :(得分:0)

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

在这种情况下,您可以将<svg>标记包含在必要的<html><body>

试试这个:

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");