gpt4 book ai didi

android - 在 Android 中正确检测放置在 ViewPager 内的 GridView 上的滑动

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:44:38 25 4
gpt4 key购买 nike

我有一个 ViewPager,它对页面使用 GridView。我希望 ViewPager 在我滑动屏幕时切换页面。

问题是在 GridView 上进行滑动时未检测到滑动。在 GridView 之外,滑动可以正常工作;似乎 GridView 没有先将其传递给 ViewPager 就捕获了所有触摸事件。

在修改源代码时,我对从 GridView 扩展的自定义类执行了此操作:

@Override
public boolean onTouchEvent(MotionEvent event) {
return pager.onInterceptTouchEvent(event);
}

-- 其中 pager 指的是 ViewPager 类。有了这个,ViewPager 将正确检测滑动并相应地移动页面,但它不允许 GridView 接受任何事件,因此我无法点击项目。

我希望能够正确检测 ViewPager 中的滑动和 GridView 中的项目点击。

最佳答案

我在 colig 的实现上遇到了麻烦,但我能够通过子类化 ViewPager 并覆盖 onInterceptTouchEvent() 方法来让它工作。我只检查了 X 方向的滑动,以便在必要时允许垂直滚动。

private static final int minSwipeDistance = 30;
private float mTouchX;

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
boolean response = super.onInterceptTouchEvent(event);
float x = event.getX();
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
mTouchX = x;
break;
case MotionEvent.ACTION_MOVE:
float dX = Math.abs(x - mTouchX);
if (dX > minSwipeDistance)
return true;
break;
}
return response;
}

关于android - 在 Android 中正确检测放置在 ViewPager 内的 GridView 上的滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9839569/

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