我需要拦截应用程序中的所有触摸事件,以监视自定义活动超时。
目前我使用dispatchTouchEvent()
在我的活动,但如果我在屏幕上有一个对话框,这不叫。 是否有任何人知道,如果有任何方法可以让我有一个对话框存在这个相同的功能?
谢谢
我需要拦截应用程序中的所有触摸事件,以监视自定义活动超时。
目前我使用dispatchTouchEvent()
在我的活动,但如果我在屏幕上有一个对话框,这不叫。 是否有任何人知道,如果有任何方法可以让我有一个对话框存在这个相同的功能?
谢谢
对于使用dispatchTouchEvent()
在DialogFragment,重写onCreateDialog
并返回一个自定义Dialog
与dispatchTouchEvent
(在您的自定义DialogFragment)。
为例,用于当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);
}
};
}