2012-07-06 2 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가 눌러 지는지 여부 만 감지하려면 EditText ... 또는 OnClickListener에 OnTouchListener를 추가하십시오.

편집 :

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에 속하지 않습니다.

+0

그 반대입니다. 터치 이벤트가 EditText 외부에서 발생했는지 감지합니다. –

+0

"within"은 "inside"를 뜻하지 않습니까? 아니면 영어가 잘못 되었습니까? – Ixx

+0

확인. 나는 이것이 기본적으로 옳다고 생각한다. 그러나 컨테이너가 무엇을 얻을지에 대한 명확한 설명을 원합니다. 디버깅은 EditText와 같은 포함 된 요소가 터치 이벤트를 중얼 거려서 컨테이너에 버블 링하지 않는다는 것을 나타냅니다. 체크 박스와 같은 활동의 다른 모든 요소는 또한 자신의 영역에있는 터치 이벤트를 중얼 거림 (거품을 일으키지 않음)합니다. 어쩌면 포함 된 요소에 터치 이벤트를 버블 링하라는 매니페스트의 일부 설정이거나이를 수행하는 메소드를 재정의해야할까요? –

관련 문제