setOnClickListener无法在Android WebView上响应

Zoh*_*dar 6 android webview

我有一个包含TextView的Android LisView,用于显示列表中的数据,

在添加完之后,我将其更改为Webview,除了setOnClickListener不再响应之外,其他一切看起来都不错。

我已经阅读了有关Webview的内容,发现不支持setOnClickListener,而是在那里支持setOnTouchListener

一种使用与Android WebView中的setOnClickListener相同功能的方法?

像这样:

  myWebView.setOnClickListener(new OnClickListener(){ 
                          @Override 
                          public void onClick(View v) {

                          //do it ..

                          } 
                        }); 
Run Code Online (Sandbox Code Playgroud)

谢谢 (:

Kon*_*rov 5

为什么不使用您所说的 onTouch 侦听器?

myWebView.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            return false;
        }
    });
Run Code Online (Sandbox Code Playgroud)


Mur*_*mel 5

我最终得到了这个解决方案:

public class ClickableWebView extends WebView {

    private static final int MAX_CLICK_DURATION = 200;
    private long startClickTime;

    public ClickableWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public ClickableWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ClickableWebView(Context context) {
        super(context);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN: {
                startClickTime = Calendar.getInstance().getTimeInMillis();
                break;
            }
            case MotionEvent.ACTION_UP: {
                long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
                if(clickDuration < MAX_CLICK_DURATION) {
                    super.performClick();

                }
            }
        }
        return true;
    }

}
Run Code Online (Sandbox Code Playgroud)

备注:

  • 将所有点击事件禁止显示在WebView(例如:超链接)内部的任何事件
  • 只需OnClickListener通过onClick在xml或Java中添加
  • 不干扰滚动手势

感谢Stimsoni回答如何在onTouchEvent()中区分移动和单击?