Tengo una actividad que usa el estilo Theme.Dialog de modo que es una ventana flotante sobre otra actividad. Sin embargo, cuando hago clic fuera de la ventana de diálogo (en la actividad de fondo), el diálogo se cierra. ¿Cómo puedo detener este comportamiento?
229
Respuestas:
Esto te puede ayudar. Es una forma de manejar el evento de toque externo:
¿Cómo cancelar un cuadro de diálogo temático como Actividad cuando se toca fuera de la ventana?
Al captar el evento y no hacer nada, creo que puedes evitar el cierre. Pero lo que es extraño, sin embargo, es que el comportamiento predeterminado de su diálogo de actividad no debe cerrarse cuando toca afuera.
(PD: el código usa WindowManager.LayoutParams)
fuente
Para evitar que el cuadro de diálogo se descarte al presionar la tecla Atrás, use esto
Y para evitar que el cuadro de diálogo se descarte en el toque externo, use esto
fuente
AlertDialog
cierre al tacto, y eso es lo que proporciona esta respuesta.setCancelable(false)
Lo que realmente tiene es una Actividad (incluso si parece un Diálogo), por lo tanto, debe llamar
setFinishOnTouchOutside(false)
desde su actividad si desea mantenerla abierta cuando se hace clic en la actividad en segundo plano.EDITAR: esto solo funciona con Android API nivel 11 o superior
fuente
onBackPressed()
no hacer nada en su cuerpoLo que funcionó para mí fue crear
DialogFragment
un conjunto para que no sea cancelable:fuente
Cuando use el diálogo como una actividad en onCreate, agregue esto
fuente
Para API 10 superior, el cuadro de diálogo desaparece cuando se toca al aire libre, mientras que en un nivel inferior a API 11, el cuadro de diálogo no desaparece. Para evitar esto, debe hacer:
En
styles.xml
:<item name="android:windowCloseOnTouchOutside">false</item>
O
En el
onCreate()
método, use:this.setFinishOnTouchOutside(false);
Nota: para API 10 y versiones inferiores, este método no tiene efecto y no es necesario.
fuente
Establecer el diálogo cancelable como falso es suficiente, y si toca fuera del diálogo de alerta o hace clic en el botón Atrás, desaparecerá el diálogo de alerta. Entonces usa este:
setCancelable(false)
Y la otra función ya no es necesaria:
dialog.setCanceledOnTouchOutside(false);
Si está creando un diálogo temporal y se pregunta dónde colocar esta línea de código, aquí hay un ejemplo:
fuente
Use este código, me está funcionando
fuente
Mire este enlace para más detalles sobre el diálogo.
fuente
Simplemente,
evitar que el usuario haga clic fuera del cuadro de diálogo.
fuente
El cuadro de diálogo de alerta está en desuso, así que use el cuadro de diálogo Diálogo = nuevo cuadro de diálogo (esto);
Para evitar el cierre en contacto externo
fuente
¡Úselo
setFinishOnTouchOutside(false)
para API> 11 y no se preocupe porque el comportamiento predeterminado de Android de que el diálogo temático de actividad no se terminará en el toque externo para API <11 :) !!fuente
Lo uso en onCreate (), parece funcionar en cualquier versión de Android; probado en 5.0 y 4.4.x, no se puede probar en Gingerbread, los dispositivos Samsung (Nota 1 con GB) lo tienen de esta manera por defecto:
fuente
Supongo que esto te ayudará. Funcionó para mí
fuente
Aquí está mi solución:
fuente
También es posible asignar diferentes acciones implementando onCancelListener:
fuente
Estaba enfrentando el mismo problema. Para manejarlo configuré un
OntouchListener
cuadro de diálogo y no hago nada dentro. Pero el diálogo se descarta al girar la pantalla también. Para solucionarlo, configuré una variable para decirme si el diálogo normalmente se ha descartado. Luego configuroOnDismissListener
a mi diálogo y en el interior verifico la variable. Si el cuadro de diálogo tiene descuido, normalmente no hago nada, o de lo contrario vuelvo a ejecutar el cuadro de diálogo (y establezco su estado como cuando lo descarto en mi caso).fuente
builder.setCancelable (falso);
mensaje público vacío (Ver v) {
fuente
Esta es la respuesta perfecta a todas tus preguntas ... Espero que disfrutes codificando en Android
fuente