2014-01-11 5 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 и версии атрибутов. Javascript включен в WebView, и полученный документ document.body.innerHTML корректен для элемента svg, просто он не отображается. WebView способен загружать и отображать html-файл с похожим svg внутри из актива. Что не так?

ответ

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

Это в связанном примере, но комментируется в моем коде.

Смежные вопросы