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);
}
相关推荐
贺biubiu7 小时前
2025 年终总结|总有那么一个人,会让你千里奔赴...
android·程序员·年终总结
xuekai200809017 小时前
mysql-组复制 -8.4.7 主从搭建
android·adb
nono牛8 小时前
ps -A|grep gate
android
未知名Android用户9 小时前
Android动态变化渐变背景
android
nono牛10 小时前
Gatekeeper 的精确定义
android
stevenzqzq11 小时前
android启动初始化和注入理解3
android
城东米粉儿13 小时前
compose 状态提升 笔记
android
粤M温同学14 小时前
Android 实现沉浸式状态栏
android
ljt272496066114 小时前
Compose笔记(六十八)--MutableStateFlow
android·笔记·android jetpack