2011-10-24 3 views
5

Je veux montrer les fichiers html d'un livre epub dans webview en utilisant ViewPager. Les fichiers texte seulement s'affichent correctement, mais les pages comportant des images ne s'affichent pas correctement (les images ne s'affichent pas). Les images n'apparaîtront qu'après avoir cliqué sur le bouton Zoom. Après cela, lorsque j'appuie sur le bouton de zoom arrière, l'image disparaît. J'ai essayé de charger un fichier xml (test.xml) qui contient une image. Au premier moment, il ne charge pas l'image. Mais après que je me sois changé en portrait et que je sois revenu au paysage terrestre, l'image a été montrée.Android ViewPager ayant WebView ne montre pas l'image incorporée avec style

Cela fonctionne correctement lorsque j'ai essayé le même fichier dans un WebView sans ViewPager.

test.xml

?xml version='1.0' encoding='utf-8'?> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
     <title>Cover</title> 
     <style type="text/css" title="override_css"> 
      @page {padding: 0pt; margin:0pt} 
      body { text-align: center; padding:0pt; margin: 0pt; } 
      div { margin: 0pt; padding: 0pt; } 
     </style> 
    </head> 
    <body> 
     <div> 
      <img src="cover1.jpg" alt="cover" style="height: 100%"/> 
     </div> 
    </body> 
</html> 

Lorsque j'ai enlevé la propriété syle(), il fonctionne très bien. Est-ce le problème avec ViewPager?

Quelqu'un peut-il m'aider à résoudre ce problème?

Répondre

0

Je ne sais pas ce qui cause le problème et vous devriez essayer de comprendre comment éviter cela. Toutefois, en guise de solution de contournement temporaire, vous pouvez essayer d'ajouter un WebViewClient à votre WebView, à l'écoute de onPageFinished ->, puis de recharger la page une seule fois. Quelque chose comme (pas testé):

webview.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished (WebView view, String url){ 
     // Called when the page is finished loading 
     if(firstTime) 
      webview.loadUrl(url); // ONLY call this the first time!! 
    } 
}); 
Questions connexes