我已經經歷了所有關於解聘但是一個對話框onTouchOutside,答案搜索,我使用DialogFragment在我的應用程序。當用戶單擊DialogFragment的區域時,如何取消DialogFragment。解僱DialogFragment(不是對話框)onTouchOutside
我已經研究對話框的source code爲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 並按照我的理解,我只能看到對話框的區域,而不是它的outsied部分(我指的剩餘部分在DialogFragment之後的屏幕)。
您能否提供用於實施DialogFragment,如果可能,這setCanceledOnTouchOutside與樣本代碼的方式?
'DialogFragment'沒有一個名爲'setCanceledOnTouchOutside()''Dialog'的方法。請仔細閱讀問題。 – 2012-02-14 14:49:39
以上回答並不意味着它有。 'DialogFragment'具有方法'getDialog()',它返回'Dialog',它的HAS方法'setCanceledOnTouchOutside()'。請仔細閱讀答案。 – 2012-02-14 15:05:46
哦,男人..請更具描述性..如果你可以編輯答案,我可以upvote它。我已經在自定義的'DialogFragment'實現的'onCreateView()'內部調用了它,並且它工作正常。謝謝。 – 2012-02-14 15:33:09