Ho cercato attraverso tutte le risposte su che respinge una finestra di dialogo onTouchOutside, però, io sto usando DialogFragment nella mia applicazione. Come posso ottenere il licenziamento del DialogFragment quando l'utente fa clic all'esterno della regione DialogFragment.respingere DialogFragment (non Dialog) onTouchOutside
Ho esaminato dialogo s' source code per setCanceledOnTouchOutside
public void setCanceledOnTouchOutside(boolean cancel) {
if (cancel && !mCancelable) {
mCancelable = true;
}
mCanceledOnTouchOutside = cancel;
}
C'è un'altra funzione che può essere interessante che è isOutOfBounds
private boolean isOutOfBounds(MotionEvent event) {
final int x = (int) event.getX();
final int y = (int) event.getY();
final int slop = ViewConfiguration.get(mContext).getScaledWindowTouchSlop();
final View decorView = getWindow().getDecorView();
return (x < -slop) || (y < -slop)
|| (x > (decorView.getWidth()+slop))
|| (y > (decorView.getHeight()+slop));
}
ma non sono riuscito a capire un modo per utilizzarli per DialogFragment
Oltre a questi ho esaminato lo stato dell'applicazione con hierarchyviewer e come ho capito, posso vedere solo la regione della finestra e non la parte outsied di essa (intendo la parte restante del schermo dopo DialogFragment).
si può suggerire un modo di attuazione del presente setCanceledOnTouchOutside per DialogFragment e, se possibile, con un codice di esempio?
'DialogFragment' non ha un metodo chiamato' setCanceledOnTouchOutside() '' Dialog' ha. Si prega di leggere attentamente la domanda. –
Sopra la risposta non implica che ha. 'DialogFragment' ha il metodo' getDialog() 'che restituisce' Dialog' quale metodo HAS 'setCanceledOnTouchOutside()'. Si prega di leggere attentamente la risposta. –
Oh uomo .. per favore sii più descrittivo .. Se puoi modificare la risposta, posso prevederlo. L'ho chiamato all'interno di 'onCreateView()' di una implementazione personalizzata di 'DialogFragment' e funziona bene. Grazie. –