¿Cómo manejar hacer clic en las vistas secundarias y tocar en los ViewGroups de los padres?

En mi diseño tengo una estructura como esa:

--RelativeLayout | --FrameLayout | --Button, EditText... 

Quiero manejar eventos táctiles en RelativeLayout y FrameLayout, así que establezco el onTouchListener en estos dos grupos de vistas. Pero sólo se captura el toque en el RelativeLayout.

Para intentar solucionar esto, escribí mi propio CustomRelativeLayout, y anular el onInterceptTouchEvent , ahora el clic en el ViewGroup hijo (FrameLayout) es capturado, pero el clic en los botones y otras vistas no produce ningún efecto.

En mi propio diseño personalizado, tengo esto:

 public boolean onInterceptTouchEvent(MotionEvent ev) { return true; } 

Necesita anular el onInterceptTouchEvent() para cada niño, de lo contrario permanecerá un onTouchEvent para el padre.

Interceptar eventos de toque en un grupo de vistas

 @Override public boolean onInterceptTouchEvent(MotionEvent ev) { /* * This method JUST determines whether we want to intercept the motion. * If we return true, onTouchEvent will be called and we do the actual * scrolling there. */ ... // In general, we don't want to intercept touch events. They should be // handled by the child view. return false; } 

Debe devolver un mensaje falso para que el niño lo maneje, de lo contrario, lo está devolviendo al padre.

Su solución personalizada capturará eventos táctiles desde cualquier lugar de su diseño relativo ya que el método sobreescrito se establece en siempre true.

Para su requisito supongo que es mejor utilizar el método onClick en lugar de usar onTouch.

El método OnTouch invoca diferentes subprocesos en cada TouchEvent y supongo que es la causa de tu problema

En lugar de manejar estos eventos, es mejor probar el método onClick.

  • Android: ¿Cómo obtener una vista dada una actividad dentro de una clase normal?
  • Error al inflar la vista de clase interna
  • Debe pasar en una vista no nula
  • Android - vistas de servicio
  • Actividad de búsqueda que no se está iniciando al pulsar Intro
  • Android obtiene la vista de Preferencia en PreferenciaActividad
  • Meta de Viewport para el navegador predeterminado de Android
  • Falta el puerto reenviado en el Visor de jerarquía: Uso de Android Studio
  • Establecer una imagen de fondo en una vista extiende mi vista
  • Cómo detectar cuándo un conmutador se desliza, no se hace clic
  • Presentar contenido html como "páginas dinámicas"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.