2010-10-05 7 views
3

J'ai vu une autre question SO sur ce sujet et il n'a pas été résolu. J'utilise LoadData() avec html généré par l'application.onPageFinished dans WebViewClient ne semble pas se déclencher correctement

J'ai remarqué que lorsque j'ajoute quelques lignes vides après un nouveau texte, la page défile et le texte prend un moment pour apparaître magiquement (pas de défilement, il apparaît juste comme dans un fondu d'entrée.).

Regarder .getContentHeight() il ne se met pas à jour dans l'événement onPageFinshed(), mais il est mis à jour lors des ajouts ultérieurs de texte sur la page.

J'ai créé un événement de minuteur pour surveiller getContentHeight. Même après avoir trouvé getContentHeight avait changé et a publié un browser.pageDown (true) la page a quand même fait défiler vers le bas.

Il semble fonctionner correctement lors de l'entrée de l'activité pour la première fois. Mon problème n'arrive qu'avec j'ajoute quelques lignes à newInnerHTML.

En outre, la vue impliquée a un en-tête et un pied de page avec le navigateur au milieu. Le webView n'est pas derrière le pied de page.

Est-ce un bug ou manque-t-il quelque chose?

TIA, Jim

ce code est dans le onCreate pour l'activité.

 final WebView browser = (WebView) findViewById(R.id.webview); 
     browser.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onPageFinished(WebView view, String url) { 
       super.onPageFinished(browser, url); 
       // browser.computeScroll(); //didn't help 
       Log.d(TAG,"page getContentHeight: " + browser.getContentHeight()); 
       Log.d(TAG,"page finished"); 
       browser.pageDown(true); 
      } 
     }); 

Cette méthode est après la onCreate pour l'activité

UpdateMessageDisplay private void() {

 //loadData fires onPageFinished but without the new data 
    browser.loadData("<html><body>" + newInnerHTML + "</body></html>", "text/html", "utf-8"); 
    //reload() again fires onPageFinished but this time with new data 
    browser.reload(); 

} 

Répondre

Questions connexes