我已经阅读了许多与此主题相关的主题,但仍然无法解决该问题。
这就是问题-我有一个OnTouchListener
的父视图,当触摸除嵌套子视图之外的所有位置时,它都能很好地工作。因此,我需要的是整个ViewGroup,就像用户在滑动OnTouchListener
中设置的那样,但是当用户单击嵌套的子级时,我需要对该子级执行click事件。
现在的代码:
chldView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
considerAsClick[0] = true;
return true;
}
if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
considerAsClick[0] = false;
return false;
}
if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
if (considerAsClick[0]){
handleClickEvent();
return true;
}
}
return false;
}
});
问题是当我在false
后返回MotionEvent.ACTION_DOWN
时,父母的onTouchListener可以正常工作,并且一切看起来不错,但是没有其他动作(ACTION_MOVE,ACTION_UP)被跟踪!我发现这是正常行为,所以还可以。
当我在true
之后返回MotionEvent.ACTION_DOWN
时,父母的onTouchListener不起作用!无论在MotionEvent.ACTION_MOVE
或MotionEvent.ACTION_UP
之后返回什么。
那可以做什么?