我有一个3x3的TableLayout,每个单元格中都有一个Button。 TableLayout位于ViewFlipper上,因此在ViewFlipper中检测到滑动手势时,会向用户显示另一个视图(以编程方式添加所有内容,但ViewFlipper除外)。
问题是,如果在Button上滑动,则会触发其onClick事件,并且不会在ViewFlipper上执行滑动。我想将滑动事件传递给ViewFlipper(如果是滑动事件),并在单击时将onClick事件保留在Button上。而且,如果这是轻扫事件,请不要单击按钮。
尝试过:
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_MOVE){
vFlipper.onTouchEvent(event);
return false;
}
return false;
}
});
但是在ViewFlipper中没有触发OnTouch。这是ViewFlipper上的OnTouchListener:
vFlipper.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i("TAG", "Intercepted");
int action = event.getActionMasked();
switch (action){
case MotionEvent.ACTION_DOWN:
startX = event.getX();
break;
case MotionEvent.ACTION_UP:
float endX = event.getX();
float endY = event.getY();
//swipe right
if (startX < endX) {
vFlipper.showNext();
}
//swipe left
if (startX > endX) {
vFlipper.showPrevious();
}
break;
}
return true;
}
});
谢谢。