gpt4 book ai didi

java - 为什么 onFling() 在 ListView 中不起作用?

转载 作者:行者123 更新时间:2023-11-30 10:10:32 24 4
gpt4 key购买 nike

我的应用
显示一个 ListView。当向右或向左滑动时,应加载第二天或前一天的 ListView

我的解决方案
我尝试使用 onFling() 方法来检测向左或向右滑动。如果我在 ListView 上方的 TextView 上滑动,效果很好。

我的问题
ListView 上滑动不会触发 onFling() 方法。可能是因为我的 ListView 是可滚动的。关于如何解决这个问题的任何想法?

OnFling()

private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 100;
GestureDetector gestureDetector;


@Override
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
boolean result = false;
try {
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) {
Toast.makeText(this, "Right to Left swipe", Toast.LENGTH_SHORT).show();
result = true;

} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
//left to right swipe
Toast.makeText(this, "Left to Right swipe", Toast.LENGTH_SHORT).show();
result = true;
}

} catch (Exception e) {
e.printStackTrace();
}
return result;
}

最佳答案

这听起来像是 ViewPager 的理想用例,它用于在同一 fragment 的不同实例之间左右滑动。 ViewPager 会为您处理所有手势。

参见 this guidethis guide有关如何设置 ViewPager 的示例。

关于java - 为什么 onFling() 在 ListView 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52784266/

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