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

Posted

技术标签:

【中文标题】Android将触摸事件传递给WebView的内部内容【英文标题】:Android passing touch event to WebView's inner content 【发布时间】:2013-11-07 14:04:45 【问题描述】:

我有一个 web 视图,我设置了一个 onTouchListener 以捕获实际视图上的滑动事件。

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

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

【问题讨论】:

【参考方案1】:

您需要在主活动的 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;
    
);

【讨论】:

它对我不起作用....view.officeapps.live.com/op/view.aspx?src=http://… 帮帮我先生【参考方案2】:

不要使用 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);

【讨论】:

当我加载 webview 时只有它的工作。在加载 webview 后当我触摸它不工作......view.officeapps.live.com/op/view.aspx?src=http://… 帮助我先生 函数onTouchEvent不存在

以上是关于Android将触摸事件传递给WebView的内部内容的主要内容,如果未能解决你的问题,请参考以下文章

将 UICollectionView 触摸事件传递给其父 UITableViewCell

Android:WebView 触摸事件监听器

Android:将手势事件传递给另一个视图

Android WebView 触摸事件链接

安卓编程问题。怎么让悬浮窗中的view不拦截触摸事件,并将触摸事件传递给手机桌面?

检查 Android WebView 是不是正在使用触摸事件