2 ljz0826 ljz0826 于 2016.03.15 15:20 提问

DatePickerDialog中为什么点击屏幕外不消失?

final Calendar objTime = Calendar.getInstance();
int iYear = objTime.get(Calendar.YEAR);
int iMonth = objTime.get(Calendar.MONTH);
int iDay = objTime.get(Calendar.DAY_OF_MONTH);

    DatePickerDialog datePickerDialog = new DatePickerDialog(QueryDateActivity.this, DatePickerListener, iYear, iMonth, iDay);
    datePickerDialog.setCanceledOnTouchOutside(true);
    datePickerDialog.show();

            我已经设置为true了 可是还是不消失为什么?
            /**下面是原代码
            */
               final DatePickerDialog mDialog_start = new DatePickerDialog(this, null,
                    con_year_start, con_month_start, con_day_start);
            //手动设置按钮
            mDialog_start.setButton(DialogInterface.BUTTON_POSITIVE, "完成", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //通过mDialog.getDatePicker()获得dialog上的DatePicker组件,然后可以获取日期信息
                    DatePicker datePicker = mDialog_start.getDatePicker();
                    int year = datePicker.getYear();
                    int month = datePicker.getMonth();
                    int day = datePicker.getDayOfMonth();
                    tv_start.setText(year+"/"+months[month]+"/"+day);
                    con_year_start = year;
                    con_month_start = month;
                    con_day_start = day;
                }
            });
            //取消按钮,如果不需要直接不设置即可
            mDialog_start.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    mDialog_start.dismiss();
                }
            });
            mDialog_start.setTitle("请选择开始时间");
            mDialog_start.setCanceledOnTouchOutside(true);
            mDialog_start.show();

2个回答

lxk_1993
lxk_1993   Rxr 2016.03.15 19:06

你不是设置了取消吗 干嘛要有强迫症 再说 用户也会按回退

ljz0826
ljz0826 被你说中了,就是有强迫症。
2 年多之前 回复
luochoudan
luochoudan   Ds   Rxr 2016.03.15 20:11

把setCancelable()也设置一下,另外看一下是不是重写了ondispatchevent()或者onTouchEvent之类的方法。

ljz0826
ljz0826 setCancelable之前也试过了,事件分发没有使用,先不管了,就这样吧。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
实现DatePickerDialog点击确定键不消失
主要是利用了java的反射原理,代码如下: try {Field field = dialogDate.getClass().getSuperclass().getSuperclass().getDeclaredField("mShowing"); field.setAccessible(true); field.set(dialogDate, true); }catch (Excepti
关于DatePickerDialog点击返回键取消调用回调方法onDateSet()的解决办法
昨天测试上报了一条bug,内容大概为:在小米2手机中点击生日弹出DatePickerDialog后,修改日期,不点击完成,点击返回键,会修改TextView中的日期。 经过分析,代码当中我把处理日期的判断逻辑放在了OnDateSetListener监听的onDateSet()回调方法,当逻辑判断通过,就会修改的TextView当中的日期,这说明当我们点击返回键的时候会调用到onDateSet
Android开发————如何点击屏幕外侧让PopUpWindow消失
这个功能应该是不难的,查了下文档,没发现明显的方法可以调用。 开始以为popupWindow.setOutsideTouchable(true);这个方法可以呢,试了试,不行,其实这个方法时设置popupWindow以外的区域可以相应触摸事件,比如我们重写了触摸事件去做一些别的操作。 对了,还有,设置popupWindow.setFocusable(true); 这样才能让popupW
Dialog点击屏幕其他地方消失的事件
在程序中显示一个Dialog是经常的事情,有些需求就是在dialog消失的时候捕捉到它的事件改变一些变量的值。比如我已经显示了一个dialog,第二个事件来了,得先判断当前是不是已经显示了一个dialog,如果没有显示我再显示,已经显示了我就不再显示了。由此监控dialog消失的事件就很必要了。我们知道dialog有三种方法消失,一种是返回键(不做解释),一种是点击dialog消失(不做解释),还有
DatePickerDialog添加确认和取消按钮
 DatePickerDialog picker = new DatePickerDialog(MainActivity.this, DatePickerListener,                 iYear, iMonth, iDay);         picker.setCancelable(true);         picker.setCanceledOnTouch
DatePickerDialog使用
调用 DatePickerDialog dialog = new DatePickerDialog(MainActivity.this, THEME_HOLO_LIGHT, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int yea
DatePickerDialog的确定和取消按钮
今天遇到一个时间弹出框的问题, 就是想用时间框的取消按钮清空文本显示的日期数据。 然而取消按钮每次都要调用OnDateSetListener.onDateSet方法,就会影响取消按钮完成的功能! 下面是我一步一步完成的过程,这样我觉得对大家的帮助也会很大(比直接给出)!         1.先说说一个自定义的时间弹出框,点击TextView,就弹出时间框   2.添加确定、取
DatePickerDialog初次使用,所遇到的一些坑
一、类结构不管怎样,先把类的继承关系搞清楚。可以上去下边的网址上查看。 http://www.android-doc.com/reference/packages.html DatePickerDialog 类结构:public class DatePickerDialog extends AlertDialog implements DialogInterface.OnClickListener
关于Android中Dialog点击屏幕外失去焦点消失的问题
众多像我一样的初级开发这也许都会碰到这羊的问题。 需要创建一个对话框,就用 new AlertDialog.Builder(this).setTitle("").setMessage("").setPositiveButton("确定", null).setNegativeButton("取消", null).show(); 的方法来创建一个对话框,但是此时点击屏幕外,对话框就消失了
DatePickerDialog主题问题
再以此做项目中偶然遇到的问题: 我设置了application>的主题为“android:theme="@style/AppTheme"”, 然后布局文件的主题为“android:theme="@android:style/Theme.Light"”, 项目中用到了 DatePickerDialog,因为实在fragment中而不是activity中,所以没有使用"setTheme();"方