Android WebView:创建'svg'元素未呈现

时间:2014-01-11 17:44:48

标签: javascript android html svg webview

我试图将一个svg元素放在WebView(Android 3.1,12级)中。 我的代码是:

webView.loadUrl("javascript: "
+"svg=document.createElement('svg');"
+"svg.setAttribute('width','100');"
+"svg.setAttribute('height','100');"
+"svg.setAttribute('xmlns','http://www.w3.org/2000/svg');"
+"svg.setAttribute('version','1.1');"
+"svg.innerHTML=\"<polygon points='0,0 0,100 100,100 100,0' style='stroke-dasharray:4,4;stroke-width:1;stroke:black;fill:yellow'/>\";"
+"document.body.appendChild(svg);"
); //webView.loadUrl

即使直接使用createElementNS和setAttributeNS方法添加多边形子项,也没有xmlns和版本属性,它也不起作用。 在WebView中启用了Javascript,生成的document.body.innerHTML对于svg元素是正确的,只是它没有呈现。 WebView能够从资产中加载和呈现具有类似svg的html文件。怎么了?

1 个答案:

答案 0 :(得分:1)

我发现这里描述的内容很有用:Create SVG tag with JavaScript 工作代码是:

webView.loadUrl("javascript: "
+"svg=document.createElementNS('http://www.w3.org/2000/svg','svg');"
+"svg.setAttribute('width','100');"
+"svg.setAttribute('height','100');"
//+"svg.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');"
+"var svgShape=document.createElementNS ('http://www.w3.org/2000/svg','polygon');"
+"svgShape.setAttributeNS(null,'points','0,0 0,100 100,100 100,0');"
+"svgShape.setAttributeNS(null,'style','stroke-width:1;stroke:black;fill:yellow;');"
+"svg.appendChild(svgShape);"
+"document.body.appendChild(svg);"
); //webView.loadUrl

它也没有:

svg.setAttributeNS('http://www.w3.org/2000/xmlns/','xmlns:xlink','http://www.w3.org/1999/xlink');

在链接的示例中,但在我的代码中进行了注释。