WebView mit Canvas zeichnen

  • 1 Antworten
  • Letztes Antwortdatum
V

viper1209

Neues Mitglied
0
Hallo,
ich hab Probleme mit der WebView und zwar versuche ich seit 2 Wochen verzweifelt eine WebView in ein Canvas einzubinden.
Ausgangslage:

  • App die komplett mit Canvas gezeichnet wurde
  • Web-Inhalt (Inhalt des <body>) liegt als HTML-String vor (ist lokal, nichts aus dem Internet)
Ich habe es jetzt so versucht
Code:
String htmlPreafix = ""<html><head></head><body>",
            htmlsufix = "</body></html>";
String htmlContent = htmlPreafix + htmlBody + htmlsufix;

LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout v = (LinearLayout) li.inflate(R.layout.web_layout, null);
WebView wv = (WebView) v.findViewById(R.id.webView);
wv.loadData(htmlContent, "text/html", "UTF-8");

v.measure(MeasureSpec.getSize(v.getMeasuredWidth()),MeasureSpec.getSize(v.getMeasuredHeight()));
v.layout(400, 400, 400, 400);
canvas.translate(100, 100);
v.draw(canvas);
//setContentView(v);//<-funktioniert, ist aber nicht was ich brauche
was mir die folgende LogCat-Ausgabe erzeugt

06-17 14:04:06.210: D/webview(19424): [InitTabEffectPivot] >> nScreenWidth = 720
06-17 14:04:06.210: D/webview(19424): [InitTabEffectPivot] >> nScreenHeight = 1280
06-17 14:04:06.220: D/skia(19424): notifyPluginsOnFrameLoad not postponed
komischerweise funktioniert das selbe Prinzip mit einer TextView. Das hier läuft super:

Code:
LayoutInflater li=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout v =(LinearLayout) li.inflate(R.layout.layout_test, null);
TextView textView = (TextView) v.findViewById(R.id.textView1);
textView.setText("Hallo Welt");
                
v.measure(MeasureSpec.getSize(v.getMeasuredWidth()),MeasureSpec.getSize(v.getMeasuredHeight()));
v.layout(400, 400, 400, 400);
canvas.translate(100, 100);
v.draw(canvas);
(die beiden Layout-Dateien enthalten jeweils ausschließlich eine TextView bzw. eine WebView mit match-parent in alle Richtungen)

Wenn ich im Falle der WebView "setContentView(v)" anfüge, wird die WebView korrekt dargestellt, aber halt leider bildschirmfüllend, am Inhalt liegt es also nicht.

Hat Jemand eine Ahnung wo der Fehler liegt? Und Warum funktioniert es mit der TextView, aber nicht mit der WebView?
Danke im Vorraus.
 
kann mir zumindest jemand sagen, was die LogCat-Ausgabe bedeutet?
06-17 14:04:06.210: D/webview(19424): [InitTabEffectPivot] >> nScreenWidth = 720
06-17 14:04:06.210: D/webview(19424): [InitTabEffectPivot] >> nScreenHeight = 1280
06-17 14:04:06.220: D/skia(19424): notifyPluginsOnFrameLoad not postponed
Die "skia"-Meldung scheint auch etwas mit der WebView direkt zu tun zu haben, zumindest findet man sie über Google nur in Zusammenhang mit WebViews, aber eine Lösung/Bedeutung der Ausgabe hab ich noch nirgendwo gefunden.
Auch Durchwühlen der Android-Quellen hat mich nicht wirklich weiter gebracht, konnte nicht rausfinden wo die Ausgaben erzeugt werden.
 
Zurück
Oben Unten