2011-05-09 5 views
9

He registrado un listener en RelativeLayout, ver abajo. Me gustaría añadir un poco de manejo de eventos personalizado,Android: no puedo ver ACTION_MOVE/UP en onTouchEvent of a RelativeLayout

mOnTouchListener = new OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      final int action = motionEvent.getAction(); 
      boolean ret = false; 

      switch (action) { 
      case MotionEvent.ACTION_DOWN: 
       ret = doSth(motionEvent); 
       break; 
      case MotionEvent.ACTION_MOVE: 
       ret = doSth(motionEvent); 
       break; 
      case MotionEvent.ACTION_UP: 
       ret = doSth(motionEvent); 
       break; 
      } 

      return ret;  // returning false got me none of MOVE/UP events right here 
     } 
    }; 

Sin embargo, no puedo conseguir cualquier movimiento/Eventos salvo que sean devueltos cierto.

Otro intento, registré el mismo oyente en un CheckBox, todo fue bastante bien.
¿Hay diferencia entre ViewGroup y Widget? ¿Propósito del diseño?

Respuesta

24

"Sin embargo, no puedo obtener ningún evento MOVER/ARRIBA a menos que se devuelva cierto".

Has respondido tu propia pregunta. Si no devuelve true indicando que le importa y está manejando el evento, el sistema no le enviará los eventos posteriores, porque le dijo al sistema que no le importa. Si necesita supervisar todo el ciclo de vida del evento táctil, debe devolver true siempre.

+3

bien, he recordado que SDK dijo que "es cierto si el oyente ha consumido el evento, de lo contrario es falso", así que pensé que "consumir" era diferente de "importar" de todos modos. – fifth

Cuestiones relacionadas