为了账号安全,请及时绑定邮箱和手机立即绑定

在Android WebView中启用/禁用缩放

在Android WebView中启用/禁用缩放

largeQ 2019-11-11 14:57:38
WebSettings中有一些与缩放有关的方法:WebSettings.setSupportZoomWebSettings.setBuiltInZoomControls我注意到它们在某些设备上的工作方式有所不同。例如,在我的Galaxy S上,默认情况下启用缩放功能,但在LG P500上则禁用该功能(现在,我不知道如何仅启用缩放功能,但隐藏缩放按钮)。在P500上,当我打电话时,setBuiltInZoomControls(true)我可以同时使用这两种变体(多点触控和按钮)。如何在LG P500等设备上启用多点触控缩放并禁用缩放按钮?(另外,我知道在HTC设备上存在相同的问题)更新:这几乎是该解决方案的完整代码if (ev.getAction() == MotionEvent.ACTION_DOWN ||        ev.getAction() == MotionEvent.ACTION_POINTER_DOWN ||        ev.getAction() == MotionEvent.ACTION_POINTER_1_DOWN ||        ev.getAction() == MotionEvent.ACTION_POINTER_2_DOWN ||        ev.getAction() == MotionEvent.ACTION_POINTER_3_DOWN) {    if (multiTouchZoom && !buttonsZoom) {        if (getPointerCount(ev) > 1) {            getSettings().setBuiltInZoomControls(true);            getSettings().setSupportZoom(true);        } else {            getSettings().setBuiltInZoomControls(false);            getSettings().setSupportZoom(false);        }    }}if (!multiTouchZoom && buttonsZoom) {    if (getPointerCount(ev) > 1) {        return true;    }}这段代码在我onTouchEvent的WebView重写方法中。
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

我查看了源代码,WebView并得出结论,没有完美的方法可以完成您所要的内容。

我最终要做的是继承WebView和覆盖OnTouchEvent。在OnTouchEventfor中ACTION_DOWN,我检查有多少个指针正在使用MotionEvent.getPointerCount()。如果有多个指针,则调用setSupportZoom(true),否则调用setSupportZoom(false)。然后我打电话给super.OnTouchEvent().

这将在滚动时有效地禁用缩放功能(从而禁用缩放控件),并在用户即将捏住缩放时启用缩放功能。这不是一个好方法,但是到目前为止,它对我来说效果很好。

请注意,它getPointerCount()是在2.1中引入的,因此如果支持1.6,则必须做一些额外的工作。


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 1867 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信