gpt4 book ai didi

java - 当 View 包含 ListView 时,Android OnGestureListener 问题

转载 作者:行者123 更新时间:2023-11-29 09:04:52 27 4
gpt4 key购买 nike

我在使用 Android onGestureListener 时遇到一些问题,我有 3 个线性布局在线性布局中水平并排放置,线性布局位置设置为中间布局 onCreate,中间布局还包含一个 ListView 内部,我想要发生的是当我向左或向右滑动布局移动时,当我尝试在其中包含 ListView 的线性布局上向左或向右滑动时,这似乎没有拾取手势,但是如果我向右滑动或者留在其他没有任何内容的 View 上,它会拾取手势并且 View 相应地设置动画,有没有人以前遇到过这个问题或者知道如何解决它?任何帮助都会有很长的路要走谢谢

@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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com