Android 事件分发之动态的决定某个View来处理事件

现在我的需求是动态的决定某个View来处理事件。这个View可能位于最顶上,也可能被别的View遮盖。

思路

1 重写Viewgroup dispatchTouchEvent,这个方法是始终都能接受到事件的

less 复制代码
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
   if(ev.getAction() == MotionEvent.ACTION_DOWN){
      //根据自己的需求找出需要处理事件的View
   }
}

2 第二步 View自己决定自己是否处理事件 重写 dispatchTouchEvent 来决定自己是否处理事件。

scss 复制代码
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    //如果是多选模式 不存在这个问题
     ViewGroup parent = (ViewGroup) getParent();
     if(parent.isHasHitView()){
          //判断自己是否是那个应该处理事件的View
          if(this != parent.getHitView())return false;
     }
    return super.dispatchTouchEvent(event);
}
相关推荐
一直向钱2 小时前
FileProvider 配置必须针对 Android 7.0+(API 24+)做兼容
android
zh_xuan2 小时前
Android 消息循环机制
android
ajassi20003 小时前
开源 java android app 开发(十五)自定义绘图控件--仪表盘
android·java·开源
jzlhll1233 小时前
deepseek Kotlin Flow 全面详解
android·kotlin·flow
ZHANG13HAO3 小时前
Android 13 完整实现 USB 网卡支持与网络优先级配置(USB>WiFi>4G)
android·网络
梦终剧3 小时前
【Android之路】界面和状态交互
android·交互
孙小二4 小时前
Android主题切换
android
帅锅锅0074 小时前
Android.mk 编辑脚本
android
火柴就是我5 小时前
Android 记录View绘制坐标抖动问题
android