给ImageView设置了focusable后OnTouchEvent监听不到抬起事件
时间: 2023-07-31 09:05:45 浏览: 52
这个问题可能是因为设置了 `focusable` 后,ImageView 会优先处理触摸事件,导致 `OnTouchEvent` 监听不到抬起事件。你可以尝试在 `onTouchEvent` 中使用 `dispatchTouchEvent` 方法将事件传递给父布局。示例代码如下:
```java
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 处理按下事件
return true;
case MotionEvent.ACTION_MOVE:
// 处理移动事件
return true;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
// 处理抬起事件
getParent().requestDisallowInterceptTouchEvent(false);
return getParent().dispatchTouchEvent(event);
default:
return super.onTouchEvent(event);
}
}
```
在抬起事件和取消事件中,我们调用 `getParent().requestDisallowInterceptTouchEvent(false)` 来允许父布局拦截触摸事件,然后将事件传递给父布局,即 `getParent().dispatchTouchEvent(event)`。这样就可以解决 `OnTouchEvent` 监听不到抬起事件的问题了。