WebView的放大与缩小--- 新发现的问题

本文探讨了WebView中放大与缩小功能的问题及其解决方法,包括如何在不同屏幕密度下适配并解决显示效果问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天用到了WebView的放大与缩小:

加代码:

wv.getSettings().setBuiltInZoomControls(true); //显示放大缩小 controler
wv.getSettings().setSupportZoom(true); //可以缩放
wv.getSettings().setDefaultZoom(ZoomDensity.CLOSE);//默认缩放模式是 ZoomDensity.MEDIUM

效果就像地图一样,可以通过controller来控制缩放(默认在右下角位置,如果你想改变 controller组件的位置,建议自己单独布局,然后通过wv.setInitialScale方法来实现缩放)


当然,也可以使用:wv.setInitialScale(100); // 100%的比例显示,如果要放大显示,可以改成 200, 250之类的数值就可以了


今天测试

发现问题一:手机上测试,发现想要让其可以放大缩小(像地图一样),即使加上上面的代码,在手机上居然没有效果,在motorola xoom上显示却是有效果的,我晕!



发现问题二,这个方法( wv.setInitialScale(250); )在KindleFire Tablet (对应密码为169)或者 Galaxy Tab (对应密度为240) 上面,实现不了放大的效果,唉,晕死了,做Android开发感觉有点杂乱无章。

令人好生蛋疼!

页面是后端写的,那个公司的人都不知道用html处理一下的。

为什么 motorola xoom以这种方式是可以实现放大的。


查找资料发现,有可通过这样来设置:

通过当前屏幕的密度,动态设置该属性就能适应不同屏幕(当然,默认你的页面是针对160dpi的密度大小设计的):

intscreenDensity= getResources().getDisplayMetrics().densityDpi;

WebSettings.ZoomDensityzoomDensity= WebSettings.ZoomDensity.MEDIUM;

switch(screenDensity){

caseDisplayMetrics.DENSITY_LOW:

zoomDensity = WebSettings.ZoomDensity.CLOSE;

break;

caseDisplayMetrics.DENSITY_MEDIUM:

zoomDensity = WebSettings.ZoomDensity.MEDIUM;

break;

caseDisplayMetrics.DENSITY_HIGH:

zoomDensity = WebSettings.ZoomDensity.FAR;

break;

}

webview.getSettings().setDefaultZoom(zoomDensity);


即可解决。


可是这样的显示效果,客户又不满意,理由是右端留了一小片黑色区域,真要我的命啊。


暂时解决方案,当它属于平板,但又不属于motorolaxoom的时候,

aidHomeWebView.getSettings().setDefaultZoom(ZoomDensity.CLOSE);

不用 setInitialScale这个方法





参考资料:

http://www.iteye.com/topic/1114214



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值