我在onCreate()
方法中附加了一个touchlistener和gesturelistener。
当我在纵向模式下双击标题栏时,一切正常。但是当我将屏幕旋转到横向模式时,双击不再被检测到。然而,听众仍在被召唤。当我将屏幕旋转回纵向模式时,双击再次工作。
我的听众:
//Add double click gesture listener to Title Bar.
final GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
public boolean onDoubleTap(MotionEvent e) {
myMethod();
return true;
}
});
TextView tv = (TextView) findViewById(R.id.tv_title);
tv.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
});
答案 0 :(得分:2)
意识到长按总是被调用,它给了我更多的空间来找到现有的问题/答案。
我发现了question.但是,答案与我的情况无关,如果我已正确实施OnTouchListener
,它确实存在问题。
转到android docs我注意到我应该返回true,而不是手势结果。 (OnLongClick
返回void!),无论如何都可能强制它消耗掉该结果。
Android文档指定OnTouchListener
的实现,如下所示:
View myView = findViewById(R.id.my_view);
myView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// ... Respond to touch events
return true;
}
});
将我的代码更改为以下内容解决了问题:
//Add double click gesture listener to Title Bar.
final GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
public boolean onDoubleTap(MotionEvent e) {
myMethod();
return true;
}
});
TextView tv = (TextView) findViewById(R.id.tv_title);
tv.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
gestureDetector.onTouchEvent(event);
return true; // ADDED THIS
}
});
为什么它以纵向工作,但不是风景,但我不知道。