¿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.

  • Cambio de vista dentro de TabHost (una actividad, varias vistas)
  • Vista de superficie como un mapa de bits en android
  • Error al inflar la vista de clase interna
  • Android: uso de la vista personalizada en el widget
  • No se puede obtener la viewWidth después del primer diseño (WebView en un ViewPager)
  • Cómo resaltar el texto filtrado mientras se usa el widget SearchView en android
  • Debe pasar en una vista no nula
  • Android VideoView - Detecta el punto del tiempo en el video
  • Android: ¿Proporciona sugerencias de búsqueda recientes sin actividad de búsqueda?
  • Cómo escuchar el botón de búsqueda del teclado en searchView
  • Cómo configurar RecyclerView en el widget android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.