我对Android onGestureListener有一些问题,我在线性布局中有3个水平布局水平排列,线性布局位置设置为中间布局onCreate,中间布局还包含一个列表视图,我想要发生的是当我向左或向右滑动布局移动时,当我尝试使用其中的列表视图在线性布局上向左或向右滑动时,这似乎不会拾取手势,但是如果我向右滑动或者留在其他没有任何东西的视图中,它会选择手势,视图也会相应地动画,有没有人之前有这个问题,或者知道如何修复它?任何帮助都会有很长的路要走,谢谢
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
return gestureDetector.onTouchEvent(event);
}
SimpleOnGestureListener simpleOnGestureListener = new SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
float sensitvity = 50;
if ((e1.getX() - e2.getX()) > sensitvity) {
slideLeft();
} else if ((e2.getX() - e1.getX()) > sensitvity) {
slideRight();
}
return true;
}
};
private void slideRight() {
if (swipeDirection > -1) {
if (swipeDirection == 0) {
layoutContainer.animate().translationX(theDistance - 0)
.setDuration(500);
} else {
//go to home
layoutContainer.animate().translationX(0).setDuration(500);
}
swipeDirection--;
}
}
private void slideLeft() {
if (swipeDirection < 1) {
if (swipeDirection == 0) {
layoutContainer.animate().translationX(0 - theDistance)
.setDuration(500);
} else {
layoutContainer.animate().translationX(0).setDuration(500);
}
swipeDirection++;
}
}
答案 0 :(得分:0)
ListView
本身已经内置了一个手势监听器(用于滚动列表),并且可能在列表中的各个项目上也有一个onItemClickListener
。这可能会干扰整个布局的滑动行为。
Pinhassi解释的解决方案到目前为止对我来说效果最好: Android Swipe on List
可能您需要扩展ListView的onItemClickListener
并包含上面提到的滑动检测器。此外,可能需要将@Override
放在您声明onItemClick
的行的前面来覆盖listview侦听器。这样,您将维护可单击的列表项,并且可以对它们执行滑动。