android – 如何拦截所有触摸事件?

android – 如何拦截所有触摸事件?,第1张

概述如何获得应用程序的“顶级”视图(包含Activity和所有DialogFragments)?我需要拦截所有触摸事件来处理DialogFragment和我的Activity之间的某些View的动作. 我试图通过活动窗口的装饰视图抓住它们(事件)而没有运气: getWindow().getDecorView().setOnTouchListener(...); 您可以覆盖 Activity.dispa 如何获得应用程序的“顶级”视图(包含Activity和所有DialogFragments)?我需要拦截所有触摸事件来处理DialogFragment和我的Activity之间的某些VIEw的动作.

我试图通过活动窗口的装饰视图抓住它们(事件)而没有运气:

getwindow().getDecorVIEw().setontouchListener(...);
解决方法 您可以覆盖 Activity.dispatchTouchEvent以拦截活动中的所有触摸事件,即使您有一些将消耗触摸事件的ScrollVIEw,button等视图.

结合使用ViewGroup.requestDisallowInterceptTouchEvent,您可以禁用VIEwGroup的触摸事件.例如,如果要禁用某些VIEwGroup中的所有触摸事件,请尝试以下 *** 作:

@OverrIDepublic boolean dispatchtouchEvent(MotionEvent event) {    requestdisallowIntercepttouchEvent(            (VIEwGroup) findVIEwByID(R.ID.topLevelrelativeLayout),true    );    return super.dispatchtouchEvent(event);}private voID requestdisallowIntercepttouchEvent(VIEwGroup v,boolean disallowIntercept) {    v.requestdisallowIntercepttouchEvent(disallowIntercept);    int childCount = v.getChildCount();    for (int i = 0; i < childCount; i++) {        VIEw child = v.getChildAt(i);        if (child instanceof VIEwGroup) {            requestdisallowIntercepttouchEvent((VIEwGroup) child,disallowIntercept);        }    }}
总结

以上是内存溢出为你收集整理的android – 如何拦截所有触摸事件?全部内容,希望文章能够帮你解决android – 如何拦截所有触摸事件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1136763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存