2010-07-10 4 views
6

Ich zeichne einige Canvas-Charts auf dem Android-Webview, und verwenden Sie Javascript, um Diagramm nur durch Verbergen und Anzeigen zu ändern, und ändern Sie auch den Titel durch reset seine innerHTML.Seltsames Problem auf Android Webview mit Leinwand

Der Titel ist nur ein normaler HTML-Tag "<div id='title'></div>",

Das Problem ist, dass die Seite nicht gut machen, wenn ich Diagramme wechseln, zum Beispiel. Wenn ich das nächste Diagramm anzeige und die InnerHTML des Titels ändere, scheint sich der Titel an sein vorhergehendes InnerHTML "erinnert" zu haben, und es sieht so aus, als ob sich ein Text mit einem anderen überlappt.

Wenn ich manuell die Ausrichtung meines Telefons ändere, scheint es, dass die Webansicht ihren Inhalt neu zeichnen (nicht aktualisieren), dann wird alles in Ordnung sein.

Irgendeine Idee zu diesem Thema? Oder kann ich das Ereignis "orientation change" simulieren, damit mein Webview seine Seite neu erstellt, um es zu umgehen?

Antwort

0

Wenn Sie invalidate() von innerhalb Ihrer View aufrufen, sollten Sie es neu zu zeichnen bekommen. Wenn Sie eine Orientierungsänderung haben, wird Ihre View mit invalidate() ungültig gemacht, die es zwingt, seinen Inhalt erneut zu zeichnen. Sie können diese Methode invalidate() verwenden, um Ihren Inhalt neu zu zeichnen, ohne die Ausrichtung zu ändern.

invalidate() ist eine öffentliche Methode Ihrer View und kann überall dort aufgerufen werden, wo es in Geltungsbereich ist.

1

Dieses Problem tritt auf, wenn Sie einen transparenten Hintergrund mit Ihrer Webansicht verwenden. Versuchen Sie, dies in Ihr CSS einzufügen:

body { 
    background-color:black; 
} 

Oder was auch immer Sie Ihre Hintergrundfarbe wünschen.