我想实现一个覆盖所有onTouchListener的通用系统 在viewGroup上并稍后恢复它们。
我想了解地图来存储每个视图的原始听众,但我找不到任何方法 获取当前分配的监听器。
我需要做这样的事情:
View v;
View.onTouchListener backupListener = v.getOnTouchListener();
但遗憾的是getOnTouchListener不存在?我该怎么办?
答案 0 :(得分:1)
如果您使用setOnTouchListener,它不会覆盖触摸侦听器,只是将指针保存到另一个触摸侦听器,因此您实际上可以调用原始触摸侦听器:
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);
}
});
你可以查看setOnTouchListener();
的源代码