Android webview单列模式问题

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>

你解决了这个问题吗? - Zookey
是的,我已经添加了我的答案。 - Leon Lucardie
1个回答

4

我最终通过使用 loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null) 代替 loadData(htmlString,"text/html","utf-8"),并在CSS中添加100%的max-width属性以及自动宽度和高度属性来解决了问题:

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

这不是最干净的方式,但它可以工作。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接