防止 WebView 抓取 onClickListener

Prevent WebView from grabbing onClickListener

我知道这个问题经常被问到,但所有解决方案(我发现)都不适合我。

我拥有的是带有 OnClickListener 的 CardView,用于制作 Toast (#toast1)。 在 CardView 内部有多个视图以及一个 WebView。

如其他地方所述,要将点击通过 WebView 传递到 CardView,我已完成以下操作:

现在发生的事情是:

我的期望:

有点令人困惑的是,在 OnTouchListener 的文档中,return 如下:

True if the listener has consumed the event, false otherwise.

对我来说这意味着:

但是设置为 false 并没有改变任何东西。

首先,我建议您熟悉 android 触摸处理系统 - 您可以在 this answer 中找到非常好的描述。总结一下:触摸事件传播从层次结构的顶层开始,但触摸事件的实际处理从视图层次结构的最低级别开始。至于你的问题的解决方案,我可能会建议将你的 WebView 的父类子类化并按以下方式覆盖 onInterceptTouchEvent

@Override
public boolean onInterceptTouchEvent(MotionEvent e) {
    return true;
}

这将指示此父视图拦截所有将转到其子视图的触摸事件,从而将第一级触摸处理限制到此视图。