Dialog onTouchOutsideを閉じることに関するすべての回答を検索しましたが、アプリケーションでDialogFragmentを使用しています。ユーザーがDialogFragmentの領域外をクリックしたときに、 DialogFragmentを閉じるにはどうすればよいですか。
ダイアログのソースコードでsetCanceledOnTouchOutsideを調べました
public void setCanceledOnTouchOutside(boolean cancel) {
if (cancel && !mCancelable) {
mCancelable = true;
}
mCanceledOnTouchOutside = cancel;
}
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));
}
しかし、 DialogFragmentにこれらを利用する方法を理解できませんでした
これらに加えて、hierarchyviewer を使用してアプリケーションの状態を調べましたが、理解しているように、ダイアログの領域のみが表示され、その外側の部分(DialogFragmentの後の画面の残りの部分)は表示されません。
DialogFragmentにこのsetCanceledOnTouchOutsideを実装する方法を提案できますか?可能であればサンプルコードを使用してください。