使用SINGLE_COLUMN模式的Android webview问题

时间:2013-03-16 14:21:09

标签: android webview youtube

我目前遇到了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中,一切正常。 如何确保在SINGLE_COLUMN算法中正确调整YouTube视频大小?

Youtube视频的嵌入方式如下:

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

1 个答案:

答案 0 :(得分:4)

我最后使用loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null)代替loadData(htmlString,"text/html","utf-8")解决了这个问题,同时添加了100%max-width属性以及自动widthheight属性使用CSS的iframe:

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

这不是最干净的方式,但它有效。

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