¿Cómo puedo inhabilitar todos los eventos táctiles en todos los niños de un ViewGroup?
Tengo un contenedor FrameLayout
que contiene muchas cosas (incluyendo ScrollView
, WebView
, ViewPager
…).
Me gustaría poder activar el evento onClick en este contenedor, pero parece que algunos de ScrollView
, WebView
y ViewPager
interceptan el evento táctil, porque el evento onClick sólo se activa cuando hago clic en las partes del contenedor que no Tener alguno de ellos
- Consumir servicio REST Web y analizar datos XML en Android
- Android Fatal señal 11 (SIGSEGV) en 0x00000040 (código = 1) Error
- Cómo seleccionar una palabra en la vista web de Android?
- Android cómo enviar int y doble como namevaluepair como http post
- Android WebView: Imagen local grande no cargada / mostrada
¿Cómo puedo desactivar todos los eventos táctiles en los niños del contenedor para poder activar onClick en cualquier parte del mismo?
ACTUALIZAR
La idea es tener algo como el administrador de tareas en Android 3.2, es decir, donde la pantalla visible actual de la aplicación se muestra como un icono reducido, que se puede hacer clic.
Gracias
- Cómo habilitar la depuración remota / inspector de la aplicación Android de WebKit mediante WebView?
- La rotación de webcamTexture difiere en unit3d bajo Android
- Android WebView pierde cookies en los redireccionamientos
- cómo guardar y restaurar Webview Estado?
- ¿Cómo capturar una vista web a bitmap en Android?
- ¿Puedo ejecutar JavaScript sin un WebView, o un WebView puede ejecutarse sin un contexto de actividad, como en un servicio?
- Envío de un archivo pdf al cliente desde el servidor a través del servicio web
- Configurar una base de datos de servidor en línea y codificar mi aplicación nativa de Android para interactuar con ella
Puede ser que he entendido mal algo, pero supongo que la respuesta a su pregunta es muy simple: Si no desea enviar ninguno de los eventos de toque a los niños – por lo que sólo tiene que sustituir ViewGroup.onInterceptTouchEvent (MotionEvent ev)
API Referencia como esta:
public boolean onInterceptTouchEvent (MotionEvent ev){ return true; }
De acuerdo con la documentación de Android, esto significa que tu ViewGroup siempre interceptará todos los eventos de toque y no los enviará a los niños. Todos ellos serán dirigidos al ViewGroup.onTouchEvent(MotionEvent ev)
de su ViewGroup.
Puedes desactivarlos de esta manera:
FrameLayout parent = (FrameLayout)findViewById(some_id); disableChildsOnTouch(parent) public void disableChildsOnTouch(ViewGroup viewGroup){ int cnt = viewGroup.getChildCount(); for (int i = 0; i < cnt; i++){ View v = viewGroup.getChildAt(i); if (v instanceof ViewGroup){ disableChildsOnTouch((ViewGroup)v); } else { v.setOnTouchListener(null); v.setOnClickListener(null); //v.SETYOURLISTENER(null) } } }
- Filtro de adaptador personalizado IndexOutOfBoundsException
- Desactivar Android Tecla Intro en el teclado virtual