2013-06-26 8 views
16

Ich lade die Daten von einem String, und beim ersten Mal, wenn ich nach unten scrolle, blinkt das Webview einige Male.Seltsames webview schwarz blinkend beim Scrollen

Hier ist mein Code, wo ich die Daten zu laden:

webview.loadDataWithBaseURL(null, message.getmContent(), "text/html", "UTF-8", null); 

Und das xml:

<WebView 
     android:id="@+id/web_content" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_above="@+id/footer" 
     android:layout_below="@id/message_title" 
     android:layout_margin="4dp" 
     /> 
+0

Hatten Sie Ihre Webansicht in der Bildlaufansicht? Wenn ja, versuchen Sie, die Bildlaufansicht zu entfernen. –

+0

versuche android: focus = false –

+0

dann setze android: scrollingCache = "false" –

Antwort

30

Die Lösung wird ergänzt:

webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
webview.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 
+0

webview.getSettings(). SetRenderPriority (WebSettings.RenderPriority.HIGH); ist in API-Ebene 18 veraltet. http://StackOverflow.com/a/23896233/684582 –

+2

LayerType-Software verursacht eine leere Webansicht für mich. Die beste Lösung, die ich finden konnte, war die Verwendung von setBackgroundColor() mit einem Color-Objekt (wichtig, nicht ein int). – Mdlc

+0

* Die Methode setRenderPriority() * wurde in der API-Stufe 18 nicht weiter unterstützt. Es wird nicht empfohlen, Thread-Prioritäten anzupassen, und dies wird in zukünftigen Versionen nicht unterstützt. – anivaler

1

Nachdem mit der obigen Lösung Lösung , Mein WebView autoFocused auf Scrollen Sie nach unten. ich beschlossen, das Flimmern und Autoscroll von:

webView.setFocusable(false); 
webView.setFocusableInTouchMode(false); 
0

Daten aus dem Cache

webview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
webview.loadUrl(Your URL To Load); 
+0

Haben Sie die Frage gelesen? – user1940676

+0

Während ich LOAD_NO_CACHE benutze, bekomme ich etwas Verzögerung beim Laden und wenn wir dies verwenden, ist listView, dass jedes Mal die Ansicht nicht gut funktioniert, um ein Blinken zu vermeiden. Deshalb habe ich LOAD_CACHE_ELSE_NETWORK verwendet, um das Problem zu lösen Webview, die in Listenansicht verwendet wird –

+0

Haben Sie versucht, Hinzufügen von android: cacheColorHint = "@ null" zum Listenansicht? – user1940676

1

Es ist auch möglich, zu laden software Schichttyp in XML-Datei zu setzen und es funktioniert gut für mich.

android:layerType="software" 
+0

Das ist die einzige Lösung, die für mich ohne Nachteile funktionierte. –