Android:ZoomPicker破坏了onTouchListener

11

我有一个使用内置缩放控件的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的问题。

我错过了一些允许它们共存的重要代码吗,还是我只能选择其中一个并放弃另一个?


不幸的是,我还没有想出来。 - tabjsina
11个回答

0

对我来说完全正常。只需使用onTouchEvent(MotionEvent event)而不是onTouch(View v,MotionEvent event)。即使setBuiltInZoomControls设置为true也可以工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接