Android:通过父发送(OnTouchListener)处理孩子中的触摸事件

时间:2016-02-23 17:47:02

标签: android ontouchlistener

在子对象中,我们需要跟踪坐标(ACTION_MOVE)。如果坐标为getX() > x,我们必须将事件发送到父对象。

问题:要将事件发送给父级,我们需要返回false,但如果返回false,我们将无法跟踪子级中对象的坐标。

public boolean onTouch(View v,MotionEvent e) {
    if (e.getAction() == MotionEvent.ACTION_MOVE) {
        if (e.getY() > 200) {
            return false;  //we must send event to the parent object, but since then the ACTION_MOVE event no longer occurs here
        } else {
            myView.setTranslationY(e.getY());
            return true;   //we have to handle the event here
        }
    }
    return false;
}

如何正确处理这两个条件?

1 个答案:

答案 0 :(得分:0)

您可以在子类中定义一个接口,它将由父级实现。当您需要将事件发送到父对象时,可以调用接口方法,如下所示:

儿童班:

     public boolean onTouch(View v,MotionEvent e){
    if(e.getAction()==MotionEvent.ACTION_MOVE){
        if(e.getY()>200){
           super.onTouchChildListener(v,e);
         }else{
          myView.setTranslationY(e.getY());
         }
          return true;
    }
    return false;
}

...

 public interface OnChildListener {
    void onTouchChildListener(View v, MotionEvent e);
}