2013-06-26 6 views
16

Je charge les données à partir d'une chaîne, et la première fois que je fais défiler vers le bas le webview clignote quelques fois.Étrange webview clignotant en noir lorsque vous faites défiler

Voici mon code où je charge les données:

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

Et le 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

Avez-vous placé votre vue Web à l'intérieur de la vue défilement? Si oui, essayez de supprimer la vue déroulante. –

+0

try android: focus = false –

+0

puis définissez android: scrollingCache = "false" –

Répondre

30

La solution ajoute:

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); est obsolète au niveau API 18. http://stackoverflow.com/a/23896233/684582 –

+2

Le logiciel LayerType me cause un webview vide. La meilleure solution que j'ai pu trouver était d'utiliser setBackgroundColor() avec un objet Color (important, pas un int). – Mdlc

+0

* La méthode setRenderPriority() * a été abandonnée au niveau de l'API 18. Il n'est pas recommandé d'ajuster les priorités de thread, et cela ne sera pas pris en charge dans les futures versions. – anivaler

1

Après avoir résolu avec la solution ci-dessus , Mon WebView autoFocused sur défiler vers le bas. je résolu le scintillement et le défilement automatique par:

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

Pour charger les données du cache

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

Avez-vous lu la question? – user1940676

+0

Lorsque j'utilise LOAD_NO_CACHE je reçois un petit peu de retard à charger et quand nous utilisons c'est listView que recréer à chaque fois la vue ne fonctionne pas bien pour éviter de clignoter, donc j'ai utilisé LOAD_CACHE_ELSE_NETWORK pour résoudre le problème .. moi aussi j'avais le même problème webview qui est utilisé dans listview –

+0

Avez-vous essayé en utilisant l'ajout de android: cacheColorHint = "@ null" à la liste? – user1940676

1

Il est également possible de définir software type de couche dans le fichier xml et il fonctionne très bien pour moi.

android:layerType="software" 
+0

C'est la seule solution qui a fonctionné pour moi sans aucun inconvénient. –

Questions connexes