我有一个使用内置缩放控件的Webview,如下:
wv = new WebView(this);
wv.getSettings().setBuiltInZoomControls(true);
注意:这将激活两个主要功能 - 捏合缩放和invokeZoomPicker()(只有在视图上进行滑动操作时才会调用后者,简单触摸无法启用它)
当发生触摸事件时,我还希望发生以下事情,使用以下方式:
wv.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
Log.i("touch", "touched!");
return false;
}
});
当WebView加载时,如果我点击屏幕,日志记录会像预期的那样每次与屏幕交互时都会显示“touched”。但是,如果我执行会引发invokeZoomPicker()的某些操作(捏合缩放似乎不会导致此问题,只要缩放小部件不出现),onTouchListener 将停止响应我的轻触(即使在小部件从视图中消失几秒钟后也是如此)。
为了确保它是invokeZoomPicker(),我编辑了代码的第二个部分如下:
wv.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
wv.invokeZoomPicker();
Log.i("touch", "touched!");
return false;
}
});
这个新的onTouch方法现在只会触发一次(因此缩放小部件出现在视图上 - 并在几秒钟后消失),然后onTouch方法不会再次调用,直到重新加载视图 - 因此这绝对是invokeZoomPicker()/Zoom widget的问题。
我错过了一些允许它们共存的重要代码吗,还是我只能选择其中一个并放弃另一个?