Я ломал голову над последней парой часов, гуглил к черту гугл, и ни один из примеров на StackOverflow или других местах не работал у меня, так что вот оно...
У меня есть собственное представление, которое расширяет LinearLayout и реализует GestureDetector.OnGestureListener
.
В моем пользовательском макете у меня есть 3 кнопки, каждая из которых имеет прослушиватель кликов. Я хочу иметь возможность Fling везде в представлении, чтобы что-то выполнять, а также иметь возможность нажимать на кнопки.
Моя функция onFling отлично работает, если я бросаю внутрь вида, но не над одной из кнопок. Если я нажимаю на одну из кнопок, в большинстве случаев она выполняет щелчок, а в некоторых ничего.
Вот соответствующая часть моего кода:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) {
return false;
}
// right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
viewFlipper.setInAnimation(slideLeftIn);
viewFlipper.setOutAnimation(slideLeftOut);
viewFlipper.showNext();
return true;
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
viewFlipper.setInAnimation(slideRightIn);
viewFlipper.setOutAnimation(slideRightOut);
viewFlipper.showPrevious();
return true;
}
return false;
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return true;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return gestureDetector.onTouchEvent(event);
}
return false;
}
попробовал любую комбинацию return true; вернуть ложь; Я мог подумать о... Был бы признателен за любую помощь! :)
Спасибо!