bvo*_*mer 4 android ontouchlistener android-webview onclicklistener
我知道这经常被问到,但所有的解决方案(我发现)都不适合我.
我所拥有的是带有OnClickListener制作Toast(#toast1)的CardView.在CardView内部,有多个视图和WebView.
如其他地方所述,要通过WebView点击进入CardView,我已经完成了以下操作:
android:clickable="false"在WebView XML中设置插入以下 CardView.setOnClickListener(...)
WebView.setOnTouchListener( (view, event) -> true);
我还用匿名方法替换了lambda,看看它是否只是这个.没变.
现在发生的事情是:
true,它会被触发.我期待的是:
有点令人困惑的是,在OnTouchListener的文档中,返回如下:
如果侦听器已使用该事件,则为true,否则为false.
对我来说,这意味着:
true:当侦听器使用它时,不要将点击传递给下面的视图false:通过点击查看以下视图,因为侦听器没有使用它但设置为false并没有改变任何东西.
首先,我建议你熟悉android触摸处理系统 - 你可以在这个答案中找到一个非常好的描述.总结一下:触摸事件传播从层次结构的顶层开始,但触摸事件的实际处理从视图层次结构的最低层开始.至于您的问题的解决方案,我可能建议您以下列方式升级您的父级WebView并覆盖onInterceptTouchEvent:
@Override
public boolean onInterceptTouchEvent(MotionEvent e) {
return true;
}
Run Code Online (Sandbox Code Playgroud)
这将指示此父视图拦截否则将转到其子视图的所有触摸事件,从而将第一级触摸处理限制为此视图.
| 归档时间: |
|
| 查看次数: |
907 次 |
| 最近记录: |