12

find getX() と getY() は両方とも float を返すことができます。しかし、TouchEvent e.get()、e.getY() の座標が EditText UI 要素の境界内にあるかどうかを検出するにはどうすればよいでしょうか? getX() と getY() は float ですが、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 の 1 つで false を返すと、傍受されて親に転送されません。したがって、親のリスナーで検出したすべてのタッチは、EditText に属しません。

于 2012-07-06T23:38:03.163 に答える