3

我目前在使用 Android 时遇到问题WebView。此 webview 当前初始化如下:

_post_WebView = (WebView) view.findViewById(R.id.post_webview);
_post_WebView.setBackgroundColor(Color.WHITE);
_post_WebView.setWebViewClient(new PostWebViewClient());
_post_WebView.getSettings().setBuiltInZoomControls(true);
_post_WebView.getSettings().setSupportZoom(true); 
_post_WebView.getSettings().setPluginState(PluginState.ON);
_post_WebView.getSettings().setJavaScriptEnabled(true);
_post_WebView.getSettings().setRenderPriority(RenderPriority.HIGH);
_post_WebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
_post_WebView.setWebChromeClient(new WebChromeClient() {});
_post_WebView.getSettings().setUseWideViewPort(false);
_post_WebView.getSettings().setLoadWithOverviewMode(true);
_post_WebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

此 webview 用于显示从服务器检索到的 HTML 字符串。(使用loadData方法)。现在的问题是,在SINGLE_COLUMN模式下,图像和文本的宽度和高度都正确调整了大小,但是嵌入的 youtube 视频在宽度调整时,高度没有调整,因此只显示一个黑框。

LayoutAlgorithm.NORMAL一切工作正常。如何确保 youtube 视频也能在SINGLE_COLUMN算法中正确调整大小?

Youtube 视频的嵌入如下:

<iframe allowfullscreen="" frameborder="0" height="315" width="420" src="YOUTUBE_VIDEO_LINK"></iframe>
4

1 回答 1

4

我终于通过使用loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null)而不是同时使用 CSS 向 iframeloadData(htmlString,"text/html","utf-8")添加 100%max-width属性和自动width和属性来解决它:height

htmlString = "<html><head><style>iframe {max-width: 100%; width:auto; height: auto;}</style></head><body>"+htmlString+"</body></html>";

这不是最干净的方法,但它确实有效。

如果与布局算法一起使用,此方法也应该有效NARROW_COLUMNS

于 2013-07-23T05:14:55.763 回答