Отклонить DialogFragment (не Dialog) onTouchOutside

Я просмотрел все ответы об отклонении 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

В дополнение к этому я исследовал состояние приложения с помощью средства просмотра иерархии и насколько я понимаю, я могу видеть только область диалога, а не его внешнюю часть (я имею в виду оставшуюся часть экрана после DialogFragment ).

Не могли бы вы предложить способ реализации этого setCanceledOnTouchOutside для DialogFragment и, если возможно, с помощью примера кода?

19
задан cesar 5 May 2012 в 04:12
поделиться