2011-03-06 11 views
5

Quiero mostrar un pequeño cuadro de diálogo personalizado sobre la actividad del usuario actual, pero tengo clics en el área fuera de mi cuadro de diálogo entregado al fondo (que sería el iniciador u otra actividad). Intenté crear una actividad base transparente y el cuadro de diálogo se muestra encima, pero los clics se registran en la actividad transparente y no en lo que está detrás ...¿Se muestra un cuadro de diálogo y sigue entregando clics al fondo?

Sé que Popup tiene setOutsideTouchable - método, pero esta propiedad a true simplemente descarta la ventana emergente, en lugar de la entrega de clics para el fondo, que yo sepa ...

Gracias por su ayuda,
Nick

+0

¿Has considerado construir tu actividad en FrameLayout, para que todo se acumule encima del resto? Entonces puede mostrar/eliminar su ventana emergente en su tiempo libre, ¿no? – Sephy

+0

¡Gracias por su respuesta! Esa sería una gran idea si fuera solo mi actividad, pero quiero que se muestre la ventana emergente de un servicio, sin impedir que el usuario presione en otro lugar (fuera de mi ventana emergente), para hacerlo lo más discreto posible. Desafortunadamente no puedo usar 'Toast' o' Notification' estándar para esta tarea en particular: -/ – Nick

+0

@Nick, ¿encontró alguna solución? – Guy

Respuesta

1

Puede utilizar una ventana emergente "Diálogo como" y mostrarla para el usuario en la parte superior de su actividad. Los eventos externos se entregarán a la actividad principal.

+0

¿Puede explicarme? esta respuesta mas? ¿Puedo abrir la ventana emergente en la parte superior de la ventana de llamada entrante, por ejemplo? – Guy

0

Se podía cambiar de lugar para que el emergente en realidad está "detrás" de la pantalla inicial, pero luego establece la pantalla inicial como transparente.

Editar: Esto solo sería aplicable dentro de una aplicación, por supuesto.

+0

Esa es una buena idea y funcionaría si solo estuviera tratando con mi propia aplicación, pero quiero que el cuadro de diálogo se muestre en todo el sistema, sin importar qué aplicación esté usando el usuario en este momento ... – Nick

0

No puedo ver el significado más profundo de explotar el uso de los patrones de usabilidad dados de Android haciendo lo que me pides?

Se recomienda y se adhiere a los patrones comunes para que los usuarios no tengan que adaptarse en las aplicaciones básicas. Es decir, a menos que usted está trabajando en un juego :)

3

Sobre la base de esta aclaración comentar informados sobre otra respuesta ...

"Quiero que el diálogo que se muestra en todo el sistema, no importa lo que la aplicación de la el usuario está utilizando en este momento ... "

No creo que lo que quieres hacer es posible y estoy feliz por eso. :) Si se le permitiera mostrar un pequeño cuadro de diálogo sobre la aplicación de otra persona y aún así permitir que el usuario interactúe con la actividad actual ... entonces podría fácilmente engañar al usuario haciéndole creer que la pequeña ventana emergente pertenecía a la aplicación actual. y no el tuyo que está actuando desde el fondo.

Imagine todo el mal que podría hacer con algo así. Solicitando al usuario que vuelva a ingresar su contraseña de correo electrónico cuando estén en la aplicación Email.app .. y luego solo la almacene con fines maliciosos, etc.

No es posible ... y NO DEBERÍA ser posible. Si necesita notificar al usuario de algo, entonces debe usar el sistema de notificación integrado. ¡Por eso está ahí! :)

0

"Quiero que el diálogo que se muestra , no importa en todo el sistema que la aplicación el usuario está utilizando en el momento ..."

Eso es lo que el sistema de notificación es para. Le permite decirle algo al usuario sin interrumpirlo en lo que sea que estaba haciendo.

Las ventanas emergentes del cuadro de diálogo del sistema son malas y con mucho gusto no se implementaron en Android.

utilizar el sistema de notificación: http://developer.android.com/reference/android/app/Notification.html

Además, si estás bien con solamente un cuadro de diálogo por encima de su aplicación, a continuación, la forma más sencilla para que la interfaz de usuario sea aún sensible, mientras que su diálogo se ha terminado, es simplemente para recrear un cuadro de diálogo en una vista de desarrollo relativo y mostrar esto en lugar del cuadro de diálogo modal común.

Cuestiones relacionadas