Android将触摸事件传递给WebView的内部内容

时间:2013-10-28 17:09:13

标签: android webview ontouchlistener webviewclient

我有一个webview,我正在设置onTouchListener,以便捕获实际视图上的滑动事件。

我还在WebView上设置了WebViewClient,以便在单击webview中的某些链接时覆盖Url Loading。

问题是OnTouch处理程序总是首先接收操作,即使我返回false(当不是滑动时)它也不会将触摸事件传递给内部html内容,因此实际上从未实际点击该链接。如果我删除onTouchListener它工作正常。是否有可能以某种方式将触摸事件传递给内容?

2 个答案:

答案 0 :(得分:4)

您需要在主活动的OnCreate()内部设置一个带有requestFocus()的OnTouchListener():

mWebView = (MyWebView) findViewById(R.id.webview);
    mWebView.setOnTouchListener(new View.OnTouchListener() { 
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) { 
                       case MotionEvent.ACTION_DOWN: 
                       case MotionEvent.ACTION_UP: 
                           if (!v.hasFocus()) { 
                               v.requestFocus(); 
                           } 
                           break; 
                   } 
                   return false; 
                }
        });

答案 1 :(得分:1)

不要使用OnTouchListener,而是在WebView中覆盖OnTouchEvent:

@Override
public boolean onTouchEvent(MotionEvent event) {

    // do your stuff here... the below call will make sure the touch also goes to the webview.

    return super.onTouchEvent(event);
}