我需要拦截应用程序中的所有触摸事件以监视自定义活动超时。
目前我使用dispatchTouchEvent()
在我的活动中,但如果屏幕上有对话框,则不会调用此函数。有谁知道是否有任何方法可以在存在对话框的情况下拥有相同的功能?
Thanks
For use dispatchTouchEvent()
在DialogFragment中,覆盖onCreateDialog
并返回一个自定义Dialog
with 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);
}
};
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)