2016-04-09 32 views
1

Bir ViewGroup'daki tüm onTouchListener 'u geçersiz kılan ve daha sonra geri yükleyen bir genel sistem uygulamak istiyorum.Android: View.getOnTouchListener() nerede?

Her bir görüntünün orijinal dinleyicilerini depolamak için haritayı okudum ancak öğesinin şu anda atanmış bir dinleyiciyi bulmasının bir yolunu bulamadım.

Böyle bir şey yapmanız gerekir:

View v; 
View.onTouchListener backupListener = v.getOnTouchListener(); 

Ama ne yazık ki getOnTouchListener da mevcut değil? Nasıl yapabilirim ?

+0

kodunuzu görüntüleyin. – Sibidharan

cevap

1

Eğer gerçekten orijinal bir dokunuş İşleyici için çağırabilir yüzden, dokunmatik Dinleyici geçersiz kılma ama sadece başka dokunmatik dinleyici için bir işaretçi tasarrufu değil setOnTouchListener kullanırsanız:

view = findViewById(R.id.someView); 
    //alternative: 
    view.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      Log.d("touch"," alternative"); 
      return true; 
     } 
    }); 
    //call to the original: 
    view.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      return v.onTouchEvent(event); 
     } 
    }); 

Eğer kaynak kodunu kontrol edebilirsiniz setOnTouchListener();

+0

@Julien: Bunu denedin mi? cevabını kabul edebilir misin –

+0

Kaynak koduna bakıyorum ve bu patentli bir şekilde yanlış görünüyor ... nerede görüyorsun? – Oded

+0

@Oded: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/view/View.java#View.setOnTouchListener%28android. view.View.OnTouchListener% 29. goto satır 4898 (bu uygulama). benim örneğimde "onTouchEvent" ye ve "onTouch" a değil –