android dialog activity touch outside
2013-06-14 16:33
1116 查看
BUG描述源地址:http://stackoverflow.com/questions/12102777/prevent-android-activity-dialog-from-closing-on-outside-touch
BUG现象:
(1) UI界面弹出一个Dialog Activity;
(2) 点击该Dialog Activity外的Button(该Button属于调用该Dialog Activity的Activity);
(3) Button事件依然响应;
需求:
当弹出Dialog后,该Dialog之外的所有组件不响应。
解决方式:
在Dialog Activity中,添加如下代码:
[补充]:
一、如果是普通Dialog,比如 AlertDialog,要实现点击该Dialog外部时,该Dialog不退出,请添加如下代码:
(1) 在onCreate方法中:
(2) 重写onTouch方法:
二、如果是在DialogFragment中,要实现点击该Dialog外部时,该Dialog不退出,请添加如下代码:
该问题解决源地址:http://stackoverflow.com/questions/8404140/how-to-dismiss-a-dialogfragment-when-pressing-outside-the-dialog
BUG现象:
(1) UI界面弹出一个Dialog Activity;
(2) 点击该Dialog Activity外的Button(该Button属于调用该Dialog Activity的Activity);
(3) Button事件依然响应;
需求:
当弹出Dialog后,该Dialog之外的所有组件不响应。
解决方式:
在Dialog Activity中,添加如下代码:
setFinishOnTouchOutside(false);
[补充]:
一、如果是普通Dialog,比如 AlertDialog,要实现点击该Dialog外部时,该Dialog不退出,请添加如下代码:
(1) 在onCreate方法中:
// Make us non-modal, so that others can receive touch events. getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); // ...but notify us that it happened. getWindow().setFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
(2) 重写onTouch方法:
@Override public boolean onTouchEvent(MotionEvent event) { if (MotionEvent.ACTION_OUTSIDE == event.getAction()) { return true; } return super.onTouchEvent(event); }
二、如果是在DialogFragment中,要实现点击该Dialog外部时,该Dialog不退出,请添加如下代码:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ... getDialog().setCanceledOnTouchOutside(false); ... }
该问题解决源地址:http://stackoverflow.com/questions/8404140/how-to-dismiss-a-dialogfragment-when-pressing-outside-the-dialog
相关文章推荐
- Android Dialog Activity
- Android中利用Activity自定义背景透明、大小和位置Dialog
- Android事件分发详解(二)——Touch事件传入到Activity的流程
- Android dialog,activity 屏蔽Home键的教程详解
- 【Android】透明的Dialog和透明的Activity
- android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity
- Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity
- Android dialog,activity 屏蔽Home键的教程详解
- Android dialog,activity 屏蔽Home键的教程详解
- Android学习-创建圆角的DialogActivity
- Android中自定义Activity和Dialog的位置大小背景和透明度等
- Android下Dialog及Activity屏蔽Home键详解
- Android Dialog样式的Activity的实现
- ProgressDialog.setCanceledOnTouchOutside(false);
- android的activity或dialog位置大小动态显示
- Android基础:关于Dialog和Activity的style的深入理解
- Android应用Activity、Dialog、PopWindow、Toast窗口添加机制及源码分析
- Android自定义dialog并实现失去焦点,activity获取焦点的功能
- Android中自定义Activity和Dialog的位置大小背景和透明度等
- Android(监听+回调=观察者)模式从Dialog到Activity传递数据