12

我可以找到 getX() 和 getY() 都返回一个浮点数。但是如何检测 TouchEvent e.get()、e.getY() 的坐标是否在 EditText UI 元素的边界内?我注意到 getX() 和 getY() 是浮点数,但 getHeight() 和 getWidth() 是 int。不会帮助比较...

4

1 回答 1

36

你到底想做什么?如果您只想检测您的 EditText 是否被触摸,请将 OnTouchListener 添加到 EditText... 甚至 OnClickListener。

编辑:如果你想检测外部,你可以在包含视图中检测触摸事件,然后,如果你有你的 EditText 视图:

Rect editTextRect = new Rect();
myEditText.getHitRect(editTextRect);

if (!editTextRect.contains((int)event.getX(), (int)event.getY())) {
    Log.d("test", "touch not inside myEditText");
}

或者你在 EditText 和容器中都添加了一个触摸监听器,并在其中一个 EditText 中返回 false,这样它将被拦截而不转发给父级。因此,您在父级侦听器中检测到的所有触摸都不属于 EditText。

于 2012-07-06T23:38:03.163 回答