2011-12-02 21 views
6

Esperaba obtener una respuesta a mi problema que tengo en este momento.Android ventana emergente se cierra al hacer clic fuera de

Tengo una clase que amplía la ventana emergente. Funciona bien, excepto que no quiero que la ventana se cierre cuando hago clic fuera de la ventana.

Por el momento tengo setOutsideTouchable(false); pero esto solo detiene los eventos fuera de la ventana, aún descarta la ventana emergente.

Un cuadro de diálogo tiene setCanceledOnTouchOutside(false), ¿hay algo similar que pueda usar?

Gracias

+0

¡Aquí está mi respuesta [1]! Y la pregunta es [pregunta]. [1]: http://stackoverflow.com/questions/10406339/avoiding-popupwindow-dismissal-after-touching-outside/30586418#30586418 [pregunta]: http: //stackoverflow.com/questions/10406339/avoid-popupwindow-dismissal-after-touching-outside – user2297951

Respuesta

6

Ok, así que se corrigió al final.

Primero hice el diseño principal que la ventana emergente se encuentra en una disposición relativa. Luego coloqué un diseño en blanco de pantalla completa en la parte superior que hice invisible y transparente.

A continuación, mostrar cuando se muestra la ventana emergente, ajuste el panel de pantalla completa visible con setVisibility(View.VISIBLE); y ocultar cuando popup está escondida con setVisibility(View.GONE);

también tienen que devolver verdadero desde una de oyente táctil para el diseño con (Para detener táctil eventos que pasan de nuevo a la disposición principal):

blocker.setOnTouchListener(new OnTouchListener() { 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
return true; 
} 
}); 

y dar a la ventana emergente: las propiedades

setTouchable(true); 
setOutsideTouchable(false); 

Cheers

+0

¿Puede explicar más exactamente cómo creó el diseño? – lory105

+0

cuando está navegando por el stackoverflow y de repente se da cuenta de que la respuesta que necesita está escrita por un viejo colega, vitorea Joss –

+0

me salvó el día. gracias amigo.. –

0

¿Qué estás usando este PopupWindow para? Parece que lo usas de una forma más Dialog.

Dicho esto, probablemente tendrá que considerar el uso de setTouchInterceptor y luego crear su propio OnTouchListener que usará para verificar dónde se realizó el toque (en la ventana emergente o no).

+0

Hola, estoy usando la ventana emergente con un carrusel y varios diseños lineales dentro. Parece funcionar mejor para lo que tengo que hacer aparte de este problema que tengo. –

Cuestiones relacionadas