2012-07-06 17 views
8

GetX() ve getY() öğelerini bulabilirim. Ancak, bir TouchEvent e.get(), e.getY() koordinatlarının EditText UI öğesinin sınırları içinde olup olmadığını nasıl anlarım? GetX() ve getY() 'nin yüzer ama getHeight() olduğunu ve getWidth() ın int olduğunu fark ettim. Karşılaştırma yapmanıza yardımcı olmayacak ...Bir dokunma olayının EditText içine girip girmediğini nasıl anlarım?

+0

Ne denediniz? I ** son derece ** [OnTouchListener belgeleri] (http://developer.android.com/reference/android/view/View.OnTouchListener.html) ... – Sam

+0

Benim yazı düzenlenmiş okuma öneririz. – Ixx

+0

Denediğim şey 'koddan önce düşün' denen bir şeydir. –

cevap

28

Tam olarak ne yapmak istiyorsunuz? Sadece EditText'inize dokunup dokunmadığını tespit etmek isterseniz, EditText ... veya OnClickListener'a bir OnTouchListener ekleyin.

Düzenleme:

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

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

Yoksa EditText bir dokunuş dinleyici hem ekleyin: dışarıda algılamak istiyorsanız, size EditText görünüme sahip verilmiş, daha sonra içeren görünümde dokunmatik olayını tespit edebilir ve kapsayıcıyı ve EditText öğesinden birinde false değerini döndürür, bu şekilde yakalanır ve üst öğeye iletilmez. Böylece, ebeveynin dinleyicisinde tespit ettiğiniz tüm dokunuşlar EditText'e ait olmayacaktır.

+0

Bunun tersi. EditText dışında bir dokunma olayı olup olmadığını tespit edin. –

+0

Fakat "içeride", "içeride" anlamına gelmiyor mu, yoksa ingilizcem yanlış mı? – Ixx

+0

Tamam. Bence bu temel olarak doğru. Ama konteynerin ne alacağı konusunda açıklama istiyorum. Hata ayıklama, EditText gibi içerilen öğelerin dokunma olaylarını değiştirdiğini ve konteynere kabarmadıklarını gösterir. Kontrol kutuları vb. Gibi aktivitelerde bulunan diğer her eleman, kendi bölgelerine giren dokunma olayını da yutturur (kabarmaz). Belki de manifest içinde yer alan bir unsurun dokunma olaylarını balon etmesini söylemek için bir ayarlama mı yoksa bunu yapmak için bir yöntemi geçersiz kılmanız mı gerekiyor? –

İlgili konular