【发布时间】:2016-08-19 01:54:39
【问题描述】:
我正在开发一个需要一些复杂的 html 呈现(基本上是文本和图像,但文本可能具有一些高级功能,如自定义字体和路径)的应用程序,并且我正在使用 webviews 来呈现内容。
问题是某些页面在某些设备上无法呈现文本。
我正在使用所有三个回调:
- onPageFinished;
- onProgressChanged;
- onNewPicture(已弃用,但一些用户认为它有效)
但即使它们被触发,我也会得到一个 WebView,它在大多数页面中都缺少文本。在某些设备上,当我触摸 web 视图时会显示文本,但这是一种不稳定的行为,无法信任。
我也尝试不断调用 invalidate() ,但它不会强制文本绘制。我正在记录 webview 控制台,显然它没有抛出任何错误(请注意,有时文本会完美呈现,而之前正确呈现的页面会出现问题)。我正在配置我的 webview(我知道某些方法已被弃用,但其他一些与之相关的解决方案适用于当时):
offScreenWebView.layout(0, 0, viewPortWidth, viewPortHeight);
offScreenWebView.getSettings().setUseWideViewPort(true);
offScreenWebView.getSettings().setLoadWithOverviewMode(true);
offScreenWebView.getSettings().setTextZoom(100);
offScreenWebView.setDrawingCacheEnabled(true);
offScreenWebView.getSettings().setJavaScriptEnabled(true);
offScreenWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
offScreenWebView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
offScreenWebView.enableSlowWholeDocumentDraw();
}
我现在很松散,因为我不知道为什么文本不呈现,而且我似乎无法强制它呈现。
【问题讨论】:
-
我检测到没有出现onProgressChanged文字的页面卡在90了。
-
我在白天工作了一些问题,我发现如果我删除自定义字体不会出现问题,但我需要使用自定义字体进行渲染,因为页面布局取决于他们。
标签: android text webview render