2014-01-11 67 views
0

我試圖把一個svg元素放入WebView(Android 3.1,12級)。 我的代碼是:Android WebView:創建'svg'元素沒有呈現

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

我找到了這裏描述有用: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 「);

這是在鏈接的例子,但在我的代碼評論。