最近在项目中做一个时间选择框的功能,功能是这样的,有一个EditText,只要点击它就弹出一个DatePicker选择日期,选中的日期赋值给EditText。

第一反应,是觉得这个事件就是只要“碰到” EditText (不管哪个位置)就弹出框,于是直觉就是用 onTouch 事件。

但是结果很奇怪,运行的时候,手指碰了一下文本框,时间框是弹了出来,但是之后又闪烁了两下,好像是又重新弹了两次;在点击确定关闭是时间框的时候也是这样,第一下关不掉,要再按一下才能关闭。

这是为什么?在onTouch 时间中做了输出的标记,看了看logcat, 原来手指碰一下,触发了三次 onTouch 事件,估计是因为手指并没有马上离开屏幕的关系。


于是换个思路,把 onTouch 换成了 onClick ,重新运行就正常了。

看来onTouch 和onClick还是有比较明显区别的。


如果是那种需要手指和屏幕保持接触的事件,可以试试 onTouch 。