android - ViewPager 中的 WebView 在显示页面之前不会加载/呈现

标签 android webview android-viewpager

我使用带有许多 WebView 的 ViewPager,它用于显示 ePub。我的问题是 WebViews 只是呈现/加载(我不太确定)wenn 相应的页面变得可见。在此之后,页面不需要重新呈现,直到它从 ViewPagerAdapter 中销毁。 结果是总是有一小会儿白页。我如何预呈现它平滑滚动到下一个 webView(之前未呈现)的页面。

这是我的 PagerAdapter:

public class MagazineReaderPagerAdapter extends PagerAdapter {

    private MagazineReaderActivity activity;
    private EpubDocument epub;

    public MagazineReaderPagerAdapter(Context ctx, EpubDocument epub)
    {
        activity = (MagazineReaderActivity) ctx;
        this.epub = epub;
    }

    @Override
        public int getCount() {
        return epub.getContentDocuments().size();
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ReaderWebViewMulti view = new ReaderWebViewMulti(activity);
        view.loadContentDocument(epub.getContentDocuments().get(position), epub);

        ((ViewPager) container).addView(view, 0);
        return view;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view.equals(object);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((View) object);
    }
}

ReaderWebViewMulti 继承自 WebView 并实现了一个方法 loadContentDocument,该方法通过 loadDataWithBaseURL 加载内容。

编辑: 在 activity-oncreate 中,setOffscreenPageLimit 设置为 3

 viewPager.setOffscreenPageLimit(3);

为了指出问题所在,我在 YouTube 上制作了一个小视频

从第 4 秒开始,您可以看到每个页面在已经可见时才被渲染。当我回去时一切都很好。

最佳答案

我遇到了同样的问题并通过禁用 web View 的硬件加速来修复它:

webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

参见 WebView inside ViewPager or ScrollView - weird rendering bug on Android 3.0+

关于android - ViewPager 中的 WebView 在显示页面之前不会加载/呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12266696/

相关文章:

android - 多次切换到另一个选项卡会出现错误

java - 从服务中检索位置

java - 如何将带有外部库的apk打包到android mobile

swift - 如何在手机网站中播放通知声音

ios - webViewDidFinishLoad() 似乎没有在 Swift 中运行

android - Android 中 Pageviewer 内的 webview 组件中的水平滚动滑动

android - TextInput 光标移动到显示/隐藏密码的开头

android - 如何阻止用户长时间等待位置修复?

ios - 在 webview 中禁用/清除自动缓存...

android - 如何禁用背后 View 点击事件Framelayout