我使用带有许多 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/