2011-12-02 5 views
6

Speravo di ottenere una risposta al mio problema che ho al momento.La finestra popup di Android viene chiusa quando si fa clic all'esterno di

Ho una classe che estende la finestra popup. Funziona bene, tranne che non voglio che la finestra venga chiusa quando clicco fuori dalla finestra.

Al momento ho setOutsideTouchable(false); ma questo interrompe semplicemente gli eventi al di fuori della finestra, continua comunque a chiudere il popup.

Una finestra di dialogo ha setCanceledOnTouchOutside(false), c'è qualcosa di simile che posso usare?

Grazie

+0

Ecco la mia risposta [1]! E la domanda è [domanda]. [1]: http://stackoverflow.com/questions/10406339/avoiding-popupwindow-dismissal-after-touching-outside/30586418#30586418 [domanda]: http: //stackoverflow.com/questions/10406339/avoiding-popupwindow-dismissal-after-touching-outside – user2297951

risposta

6

Ok così fissato alla fine.

Prima ha fatto il layout principale che il popup si trova su un layout relativo. Quindi ho posizionato un layout vuoto a schermo intero in alto che ho reso invisibile e trasparente.

mostrano Poi, quando viene mostrato il popup, impostare il pannello schermo intero visibile con setVisibility(View.VISIBLE); e nascondere quando pop-up è nascosta con setVisibility(View.GONE);

anche bisogno di tornare vero da un sul touch listener per il layout con (Per interrompere tocco eventi che passano indietro al layout principale):

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

e dare la finestra pop-up delle proprietà:

setTouchable(true); 
setOutsideTouchable(false); 

Cheers

+0

puoi spiegare più esattamente come hai creato il layout? – lory105

+0

durante lo stackoverflow e improvvisamente capisci che la risposta di cui hai bisogno è scritta da un vecchio collega - evviva Joss –

+0

mi ha salvato la giornata. grazie compagno.. –

0

Cosa stai usando questo PopupWindow per? Sembra che tu lo usi in un modo più Dialog -ish.

Detto questo probabilmente dovrete considerare di usare setTouchInterceptor e quindi creare il proprio OnTouchListener che verrà utilizzato per controllare dove il tocco è stato eseguito (il popup o meno).

+0

Ciao, sto usando la finestra popup con un carosello e diversi layout lineari all'interno. Sembra funzionare meglio per quello che devo fare a parte questo problema che ho. –