Android WebView似乎忽略了网页上的“视口”信息

时间:2010-05-25 22:50:17

标签: android html5 webview

我有一个使用视口META标记的网站告诉移动浏览器如何显示内容()。在Android浏览器中查看页面看起来是正确的(和iPhone等)。

当我将页面加载到Android应用程序中的WebView组件时,WebView忽略“VIEWPORT”标记,并以“完整”分辨率呈现页面,在这种情况下放大。

9 个答案:

答案 0 :(得分:22)

经过大量的实验,我确定如果实际页面的宽度比视口设置宽,Android WebView将不会遵循“视口”设置。

例如,我设置的视口为500px,但我的页面上有一个强制960px宽度的元素。视口没有被遵守,因为WebView拒绝隐藏额外的内容。

当我输入它时,这似乎很明显,但我必须花费数天时间处理这个问题。

答案 1 :(得分:9)

正如文档在最佳答案的链接中所说,您可以使用元标记指定设备应该如何响应Web应用与屏幕相比的大小。以下标记使Android手机尊重我的网络应用的视口大小:

<meta name="viewport" content="target-densitydpi=high-dpi" />

答案 2 :(得分:9)

尝试使用WebSetting类

的这种方法
setUseWideViewPort (boolean use)

我用它来告诉Android webview考虑我的“viewport”标签

答案 3 :(得分:3)

根据WebView文档中的“构建支持不同屏幕密度的网页”部分仔细检查您的实施:http://developer.android.com/reference/android/webkit/WebView.html

答案 4 :(得分:1)

在某些Android手机上实现的另一个失败的事实是,例如HTC Desire HD将忽略视口TAG - user-scale = no completly。

答案 5 :(得分:1)

接受的答案中的

Linkthis将有助于了解Android上的视口。

在我的场景中,使用固定宽度,解决方案是:

settings.setUseWideViewPort(true)
settings.setLoadWithOverviewMode(true)

答案 6 :(得分:0)

我只能确认您的问题。在android问题跟踪器上有一个open issue。如果你受此影响,请给它投票/明星。

答案 7 :(得分:0)

唯一对我有用的是

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, minimum-scale=1.0, shrink-to-fit=no" />

但专门为现有标记添加maximum-scale=1.0, minimum-scale=1.0有帮助。对于我的具体情况,我不想让用户能够放大/缩小YMMV。

答案 8 :(得分:-1)

使用此:

 <meta name="viewport" content="width=320, user-scalable=no, target-densitydpi=low-dpi" />

现在Android WebView和浏览器遵循视口设置。

Phew,这需要进行大量调整才能做到正确。老天。