2012-07-06 28 views
8

Tôi có thể tìm getX() và getY() cả hai đều trả về một phao. Nhưng làm cách nào để phát hiện xem các tọa độ của một TouchEvent e.get(), e.getY() có nằm trong ranh giới của phần tử UI EditText không? Tôi nhận thấy getX() và getY() là float nhưng getHeight() và getWidth() là int. Sẽ không giúp so sánh ...Tôi làm cách nào để phát hiện xem sự kiện chạm đã hạ cánh trong EditText?

+0

Bạn đã thử những gì? Tôi ** rất khuyên bạn nên đọc [tài liệu OnTouchListener] (http://developer.android.com/reference/android/view/View.OnTouchListener.html) ... – Sam

+0

Đã chỉnh sửa bài đăng của tôi. – Ixx

+0

Những gì tôi đã thử là một cái gì đó gọi là 'suy nghĩ trước khi bạn mã' –

Trả lời

28

Chính xác bạn muốn làm gì? Nếu bạn chỉ muốn phát hiện nếu EditText của bạn được chạm vào, hãy thêm một OnTouchListener vào EditText ... hoặc thậm chí OnClickListener.

Edit: Nếu bạn muốn phát hiện bên ngoài, bạn có thể phát hiện sự kiện liên lạc trong giao diện chứa, và sau đó, đưa cho bạn có cái nhìn EditText của bạn:

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

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

Hoặc bạn có thêm một người biết lắng nghe cảm ứng cả hai đến EditText và vùng chứa, và trả về false trong một EditText, theo cách này nó sẽ bị chặn và không được chuyển tiếp đến cha mẹ. Vì vậy, tất cả các chạm bạn phát hiện trong người nghe của phụ huynh, sẽ không thuộc về EditText.

+0

Nghịch đảo của điều đó. Phát hiện nếu sự kiện chạm đã xảy ra bên ngoài EditText. –

+0

Nhưng không "trong" không có nghĩa là "bên trong", hoặc là tiếng Anh của tôi sai? – Ixx

+0

Ok. Tôi nghĩ điều này về cơ bản là đúng. Nhưng tôi muốn làm rõ về những gì các container sẽ nhận được. Gỡ lỗi dường như chỉ ra rằng các phần tử được chứa như EditText gobble sự kiện liên lạc của họ và họ không bong bóng lên đến container. Mỗi yếu tố khác trên hoạt động như hộp kiểm tra vv cũng gobble (không bong bóng lên) sự kiện cảm ứng hạ cánh trong khu vực của họ. Có lẽ họ là một số thiết lập trong biểu hiện để nói với một yếu tố có chứa để bong bóng các sự kiện liên lạc của nó hoặc bạn sẽ cần phải ghi đè lên một phương pháp để làm điều này? –

Các vấn đề liên quan