当Android平板电脑上的Chrome浏览器(Nexus 7)中显示时,我有一个基本网页,可以正确响应屏幕大小和方向更改(使用CSS媒体查询)。当我在WebView中显示相同的页面时,基于屏幕宽度的媒体查询不起作用。下面是我如何设立的WebView:Android WebView和CSS媒体查询
WebView webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.loadUrl("http://10.0.1.8:8080/cbc/test");
的WebView中正确地检测方向的变化,基于以下媒体查询的行为:
@media only screen and (orientation: portrait) {
.landscape { display: none; }
}
@media only screen and (orientation: landscape) {
.portrait { display: none; }
}
使用屏幕尺寸不正常工作媒体查询,因为,根据下面的JavaScript,画面宽度和高度通过取向的变化保持恒定:
$("#dimensions").empty();
$("#dimensions").append($("<div>Width: " + screen.width + "</div>"));
$("#dimensions").append($("<div>Height: " + screen.height + "</div>"));
$("#dimensions").append($("<div>Depth: " + screen.pixelDepth + "</div>"));
我触发之前的共带有“orientationchange”事件。在Android版Chrome中运行时,宽度和高度值将正确显示,并将设备方向考虑在内。在WebView内部运行时,无论方向如何,宽度和高度都保持不变。
是否有一些配置需要应用于WebView才能获得预期的行为?
问题是关系到整个方向变化的跟踪宽度和高度查询。根据像素密度进行选择对此无济于事。 – 2013-08-24 21:55:54