gpt4 book ai didi

Android:将 AMP 格式的 HTML 加载到 WebView

转载 作者:行者123 更新时间:2023-11-28 01:13:23 25 4
gpt4 key购买 nike

我正在通过网络电话检索 Accelerated Mobile Pages (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 元素和嵌入的推文。

我还需要对 WebView 或 WebChromeClient 做些什么才能正确显示 AMP?

编辑:

下面的答案有效。但在我的具体情况下,我在 NestedScrollView 中使用 WebView。这在 Android 5.0+ 中运行良好,但低于此版本时,amp- 元素将无法加载。

从 NestedScrollView 中取出 WebView 解决了这个问题。它的父级现在是相对布局。

因此,如果您遇到同样的问题,请尝试简化您的布局,这样 WebView 就不会嵌套得很深。绝对不要将 WebView 放在 NestedScrollView 中。

最佳答案

如果不给 WebView 一个基本 url,你就不能显示嵌入的 youtube 视频、图像、推文等元素。解决方案是在 webView.loadData 上使用 webview.loadDataWithBaseUrl 而不是。您必须向它传递一个有效的 url。

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", "");

关于Android:将 AMP 格式的 HTML 加载到 WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36717006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com