当前位置:  开发笔记 > Android > 正文

setOnClickListener无法在Android WebView上响应

如何解决《setOnClickListener无法在AndroidWebView上响应》经验,为你挑选了1个好方法。

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

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

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

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

像这样:

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

                          //do it ..

                          } 
                        }); 

谢谢 (:



1> Murmel..:

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

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;
    }

}

备注:

将所有点击事件禁止显示在WebView(例如:超链接)内部的任何事件

只需OnClickListener通过onClick在xml或Java中添加

不干扰滚动手势

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

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有