Android ViewPager с WebView не показывает встроенное изображение со стилем - PullRequest
5 голосов
/ 24 октября 2011

Я хочу показать html-файлы книги epub в веб-просмотре с помощью ViewPager.Только текстовые файлы отображаются правильно, но страницы с изображениями не отображаются правильно (изображения не отображаются).Изображения появятся только после нажатия кнопки увеличения.После этого, когда я нажимаю кнопку уменьшения масштаба, изображение исчезает.Я попытался загрузить файл XML (test.xml), который содержит изображение.Сначала изображение не загружается.Но после того, как я переключился на портрет и вернулся к пейзажу, он показал изображение.

Он работает нормально, когда я попробовал тот же файл в WebView без 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>

Когда я удалил свойство syle (), оно работает нормально.Это проблема с ViewPager?

Может ли кто-нибудь помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 25 ноября 2011

Я не знаю, что является причиной проблемы, и вы должны попытаться выяснить, как этого избежать. Тем не менее, в качестве временного обходного пути вы можете попытаться добавить WebViewClient в ваш WebView, который прослушивает onPageFinished ->, а затем перезагрузить страницу один раз. Что-то вроде (НЕ ПРОВЕРЕНО):

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!!
    }
});
...