我在Android onGestureListener上遇到一些问题,我在线性布局中将3个线性布局水平并排放置,线性布局位置设置为中间布局onCreate,中间布局中还包含一个listview,我想发生的是当我向左或向右滑动布局移动时,当我尝试在其中具有列表视图的线性布局上向左或向右滑动时,这似乎没有拾取手势,但是如果我向右或向左滑动,其他视图中没有任何内容的视图将拾取该手势,并对该视图进行动画处理,是否有人以前曾遇到过此问题或有解决此问题的想法?任何帮助将大有帮助,谢谢
@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++;
}
}
最佳答案
ListView
本身已经内置了一个手势侦听器(用于滚动列表),并且可能在列表中的各个项目上也都有一个onItemClickListener
。可能这会干扰您整个布局的滑动行为。
到目前为止,Pinhassi在这里解释的解决方案对我来说最有效:
Android Swipe on List
可能您需要在ListView的onItemClickListener
上进行扩展,并包括上述的滑动检测器。另外,可能需要将@Override
放在声明onItemClick
的行的前面,以覆盖listview侦听器。这样,您将维护可单击的列表项,并且可以对其进行滑动。
关于java - 当 View 包含 ListView 时,Android OnGestureListener问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15555990/