浏览 10803 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-31
最后修改:2011-09-10
例如适合800px宽度的页面,如果通过WebView在1024px的屏幕宽度下显示时,内容(图片)会被放大,整体页面会超出屏幕。
试了将WebView的settings中的缩放都关闭了也不行。
后来发现了WebSettings.ZoomDensity这个设置,并在文档中找到了以下说明:
Enum for specifying the WebView's desired density. FAR makes 100% looking like in 240dpi MEDIUM makes 100% looking like in 160dpi CLOSE makes 100% looking like in 120dpi
这样就能很好的说明以上问题的原因了,又是密度惹的祸...
默认WebView的ZoomDensity是MEDIUM,对应160dpi。而我之前800px宽度的屏幕对应的是160dpi,1024px宽度的屏幕对应的是240dpi。所以,页面在高分辨率的屏幕上被放大了1.5倍。这个和图片自缩放的机制是一样的。
于是,只要通过当前屏幕的密度,动态设置该属性就能适应不同屏幕(当然,默认你的页面是针对160dpi的密度大小设计的):
int
screenDensity
= getResources().getDisplayMetrics().
densityDpi
;
WebSettings.ZoomDensity
zoomDensity
= WebSettings.ZoomDensity.
MEDIUM
;
switch
(screenDensity){
case
DisplayMetrics.DENSITY_LOW
:
zoomDensity = WebSettings.ZoomDensity.CLOSE;
break
;
case
DisplayMetrics.DENSITY_MEDIUM
:
zoomDensity = WebSettings.ZoomDensity.MEDIUM;
break
;
case
DisplayMetrics.DENSITY_HIGH
:
zoomDensity = WebSettings.ZoomDensity.FAR;
break
;
}
webview
.getSettings().setDefaultZoom(zoomDensity)
;
即可解决。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-09-06
你可以在html中声明<meta viewport>标签来解决这个问题。
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> 这样更简单,而且兼容性好得多 |
|
返回顶楼 | |
发表时间:2011-09-10
好的,谢谢你的建议。
sd6733531 写道 你可以在html中声明<meta viewport>标签来解决这个问题。
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> 这样更简单,而且兼容性好得多 |
|
返回顶楼 | |
发表时间:2011-10-24
我也遇到了LZ的问题,类似LZ的处理,毕竟页面不是我做的了
|
|
返回顶楼 | |
发表时间:2011-10-24
精彩的帖子,回帖也很棒。
|
|
返回顶楼 | |