38 votes

Problème de rendu de WebView sous Android KitKat

Je travaille sur une application qui a une WebView dans laquelle une page statique est chargée à partir des actifs (en utilisant également JavaScript). Cette WebView ne fonctionne pas dans KitKat, elle reste vide. Je suis conscient du changement de moteur de rendu (webkit à chrome) qui s'est produit dans WebView dans KitKat et j'ai essayé les étapes de migration, qui est donné dans Android Developers page. Mais cela ne m'a pas aidé.

Dans logcat, j'obtiens une erreur qui est lancée à partir de la source Chromium.

W/AwContents﹕ nativeOnDraw failed; clearing to background color.

Veuillez suggérer une solution de rechange.

Merci.

44voto

georgiecasey Points 2914

Dans mon cas, sous Android 4.4, j'obtenais un arrière-plan noir quel que soit le réglage et ce message d'erreur dans mon LogCat : nativeOnDraw failed ; clearing to background color.

En cherchant sur Google, il semble que ce soit parce que le rendu de toile accéléré par le matériel n'est pas pris en charge par Chromium WebView. J'ai ajouté cette ligne à la WebView pour désactiver l'accélération matérielle du canevas et maintenant ça fonctionne.

mWebview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

6voto

DataDino Points 141

J'ai rencontré le même problème, mais j'ai trouvé une solution de contournement. Tout ce que vous avez à faire est de définir explicitement un arrière-plan CSS pour votre page Web. Comme ça :

body {
  background: white;
}

Il s'avère que si vous ne définissez pas explicitement un arrière-plan pour une page Web, le WebView ne parviendra pas à dessiner ledit arrière-plan et vous vous retrouverez avec un WebView transparent.

4voto

Tore Rudberg Points 364

Il semble que ce soit un bug de Chrome Webview.

Voici un fil de discussion sur ce sujet : https://jira.appcelerator.org/browse/TIMOB-16479

Apparemment, la réponse acceptée n'est pas une solution sûre. Une solution de contournement est mentionnée dans le lien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X