2012-07-06 20 views
8

私はgetX()を見つけることができ、getY()は両方ともfloatを返します。しかし、TouchEvent e.get()、e.getY()の座標がEditText UIエレメントの境界内にあるかどうかをどのように検出するのですか? getX()とgetY()は浮動小数点ですが、getHeight()とgetWidth()はintです。比較に役立たない...タッチイベントがEditText内にあるかどうかを検出するにはどうすればよいですか?

+0

何を試しましたか?私は非常に** [OnTouchListenerドキュメント](http://developer.android.com/reference/android/view/View.OnTouchListener.html)を読むことをお勧めします... – Sam

+0

私の投稿を編集しました。 – Ixx

+0

私が試したことは、「あなたがコードする前に考える」というものです。 –

答えて

28

正確に何をしますか? 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に属しません。

+0

その逆です。 EditTextの外側でタッチイベントが発生したかどうかを検出します。 –

+0

しかし、「内」は「内部」を意味するものではなく、英語が間違っていますか? – Ixx

+0

私はこれが基本的に正しいと思います。しかし、私は容器が何を受け取るかについて明確にしたいと思います。デバッグは、EditTextのような含まれている要素がタッチイベントをゴブリングし、それらがコンテナにバブルアップしないことを示しているようです。チェックボックスなどのアクティビティ上の他のすべての要素も、ゾーン内に存在するタッチイベントを嫌う(泡立たない)。おそらく、それらは、含まれている要素にタッチイベントをバブリングするように指示するマニフェストの設定ですか、またはこれを行うメソッドをオーバーライドする必要がありますか? –

関連する問題