我正在通过网络电话检索加速的移动页面(APM)格式的HTML。然后,我试图在WebView中显示该AMP。所以我要这样设置我的WebView:
webView = (WebView) findViewById(R.id.web_view);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setJavaScriptEnabled(true);
String content = article.getContentAmp();
webView.loadData(content, "text/html; charset=utf-8", null);
它显示内容没有错误,但是显示不正确。例如,它会忽略amp-youtube元素和嵌入的推文。
为了正确显示AMP,我还需要处理WebView或WebChromeClient吗?
编辑:
下面的答案有效。但是在我的特定情况下,我在NestedScrollView中使用了WebView。在Android 5.0及更高版本中可以正常工作,但是在此之下,放大器元素将无法加载。
将WebView移出NestedScrollView即可解决此问题。它的父级现在是相对布局。
因此,如果您遇到相同的问题,请尝试简化布局,以使WebView不会深入嵌套。绝对不要将您的WebView放在NestedScrollView中。
如果不为WebView提供基本网址,则无法显示诸如嵌入的youtube视频,图像,tweet等元素。解决方案是在webView.loadData上改用webview.loadDataWithBaseUrl。您必须向其传递有效的网址。
webView = (WebView) findViewById(R.id.web_view);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setJavaScriptEnabled(true);
String content = article.getContentAmp();
String baseUrl = extractUrlFromContent(content);
webView.loadDataWithBaseURL(baseUrl, content, "text/html", "utf-8", "");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句