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

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

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

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

【问题讨论】:

    标签: android webview ontouchlistener webviewclient


    【解决方案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;
        }
    });
    

    【讨论】:

    【解决方案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);
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    相关资源
    最近更新 更多