Android中关于EditText的点击事件及响应

对于EditText,如果通过调用 setOnClickListener方法为其设置了点击事件,要注意此处有一个坑,那就是当当前焦点不在该EditText身上时,第一次的点击事件是不会响应的,即不会回调onClick()方法,之后使EditView获取焦点,再次点击时才会响应点击事件。意思就是说当焦点在所点击的EditText控件身上时,点击事件会响应,不在时就不会响应。可以考虑用Touch事件解决该问题,onTouch()事件是只要有触摸就会响应的。

用onTouchListener 在点击时会,onTouch事件会调用了两次。onTouch事件在手指按下和离开的时候分别调用了一次。判断一下当前的onTouch事件是正在按下还是正在离开,用的是其中一个给定的参数:MotionEvent 类型的 event,当本次onTouch是离开时,阻止程序继续执行即可:

cop_province.setOnTouchListener(new View.OnTouchListener() {
	@Override
	public boolean onTouch(View v, MotionEvent event) {
		//阻止手指离开时onTouch方法的继续执行
		if(event.getAction() == MotionEvent.ACTION_UP){ return true;
		}
	}
}

也就是说,onTouch还是执行两次,但第二次的弹窗操作被制止了,也就达到了效果。

新加评论 评论标题: