¿Cómo puedo mantener los eventos de OnTouch manejados por un widget, incluso si Touch Coords ya no está dentro del widget, en Android?

StackOverflow https://stackoverflow.com/questions/6803959

Pregunta

Perdón por la compleja pregunta déjame explicarte. He creado un widget personalizado que maneja algunos eventos de OnTouch. Lo que quiero hacer es cuando comienzo un evento táctil en ese widget personalizado (Ondown) Quiero que ese widget siga manejando estos eventos, incluso si las coordinaciones absolutas no están en ese widget.

Tengo una vista de desplazamiento y encima de eso (dentro del ScrollView) un widget que maneja los pergaminos (izquierda - derecha). Pero si muevo el dedo verticalmente, los eventos de OnTouch son consumidos y manejados por Scollview. Si hay una manera de forbit ScrollView para manejar eventos táctiles, o obligar mejor al widget personalizado a seguir manejando el TouchEvent, si comienzo el UNTouchEvent dentro del widget personalizado.

Actualización me encontré con eso http://groups.google.com/group/android-framework/browse_thread/thread/2cdd4269dfb2772e?pli=1 .

Eso funciona en mi caso si el widget personalizado no está dentro de una vista de desplazamiento como "ScrollView". Tratando de resolver la "abeja dentro de un objeto de desplazamiento. ¿Cómo no enviarlos a Touchevents al padre? Devolver verdadero no resuelve el problema

¿Fue útil?

Solución

En el controlador OnTouch de su widget (por ejemplo, durante Action_Move), llame al Parent.RequestDisallowinterceptTouchEvent (verdadero). Ese método básicamente es pedirle al padre (en su caso el ScrollView) y su antepasado que no intercepte el evento táctil.

Otros consejos

Deberá implementar una subclase especial de ScrollView, que permite que su widget le diga que deshabilite el desplazamiento cuando lo desee (para que no comenzará a desplazarse después de suficiente movimiento y tomar eventos de su widget). El ScrollView personalizado puede anular este método:

http://developer.android.com/reference/android/widget/scrollview.html#onintercepttouchevent(android.view.motionEvent)

Cuando no desea que la clase base consuma eventos táctiles para pergaminos, devuelva falso aquí en lugar de llamar a la implementación base.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top