Ответ 1
Для использования dispatchTouchEvent()
в DialogFragment переопределите onCreateDialog
и верните пользовательский Dialog
с помощью dispatchTouchEvent
(в вашем настраиваемом диалоговом окне).
Например, если вы закрываете клавиатуру, когда вы нажимаете на нее в диалоговом окне DialogFragment:
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new Dialog(getActivity(), getTheme()) {
@Override
public boolean dispatchTouchEvent(@NonNull MotionEvent motionEvent) {
if (getCurrentFocus() != null) {
InputMethodManager inputMethodManager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
return super.dispatchTouchEvent(motionEvent);
}
};
}