Özel bir TextView
uygularım ve görünüm dokunduğunda bir miktar işlem yapmak istiyorum. onTouchEvent
yönteminin bana setOnTouchListener
kullanmadan görünümdeki tüm dokunuşları vereceğine karar verdim (tüm işimi portatif olarak faaliyet yerine görünüm içinde yapmaya çalışıyorum), ancak kayıtlı tek dokunma olayı ACTION_DOWN
. Bunu kullanarak aktivitede bir OnTouchListener
ayarlarsam, tüm dokunma olaylarını elde ederim, ancak onTouchEvent
yapmaz.View.onTouchEvent yalnızca ACTION_DOWN olayını kaydeder
Durumun neden böyle olduğunu ya da herhangi birinin bana uygulama önerisini setOnTouchListener
kullanmayan bir çözüm sunabileceğini bilen var mı? (Bu, uygulama etkinliğinin kendi dinleyicisini belirlemesini engeller)?
Bunu yaparsam, etkinlikten uygulanan dokunma/tıklama dinleyicileri hiçbir zaman tetiklenmez. İşlevleri devre dışı bırakmak istemiyorum. Sadece gönderilmeden önce dokunuşları engellemek istiyorum, ama yine de onları gönderiyorum. 'DispatchTouchEvent' çağırmak tekrar 'onTouchEvent' çağırır ve bir yığın taşmasına neden olur (lol). –
Bir ViewGroup kapsayıcısındaysanız, çocuğunuza gönderilen dokunma olaylarını izlemek için, ıconceptTouchEvent() öğesini geçersiz kılabilirsiniz. Bunun yanında (veya doğrudan dispatchTouchEvent için - tavsiye edilmez), ne istediğinizi yapamazsınız. MotionEvent gönderimi, doğru olanı döndüren ve ardından takip eden tüm etkinlikleri o hedefe gönderen ilk alıcı aracılığıyla bir hedef bulmaktan kaynaklanır. – hackbod
Yeterince adil. Sanırım bilmem gereken şey, özel bir görünümde dokunma dinleyicisine nasıl sahip olacağınızdır, bu da uygulama sınıfının tamamen işlevsel bir dokunma dinleyicisine sahip olmasına izin vermez, ancak başlığındaki soruyu kesinlikle yanıtladınız. –