setOnClickListener 不响应 Android WebView [英] setOnClickListener not response on Android WebView

查看:37
本文介绍了setOnClickListener 不响应 Android WebView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有包含 TextView 的 Android LisView 来显示列表中的数据,

I have Android LisView that was contain TextView to display the data in the list,

我添加将其更改为 Webview,在这样做之后,除了不再响应的 setOnClickListener 之外,一切看起来都很好..

I add to change it to Webview, after doing that everything look good except the setOnClickListener that not responding anymore..

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

I have read about the Webview and found that setOnClickListener is not supported, instead setOnTouchListener is supported is there

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

a way to use the same functionality as setOnClickListener in Android WebView ?

像这样:

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

                          //do it ..

                          } 
                        }); 

谢谢(:

推荐答案

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

I ended up with this solution:

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 内任何内容的所有点击事件(例如:超链接)
  • 只需通过在 xml 或 Java 中添加 onClick 来添加 OnClickListener
  • 不中断滚动手势
  • suppresses all click-events to anything inside the WebView (e.g.: hyperlinks)
  • simply add OnClickListener by adding an onClick in xml or in Java
  • does not interupt scrolling-gestures

感谢 Stimsoni 如何区分 onTouchEvent() 中的移动和点击?

Thanks to Stimsoni Answer to How to distinguish between move and click in onTouchEvent()?

这篇关于setOnClickListener 不响应 Android WebView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆