android - ViewPager2 的 OnTouchListener
问题描述
我最近将应用程序中的 ViewPager 更改为 ViewPager2。我为 viewPager 对象设置了一个 onTouchListener 来检测手势(onFling 和 onLongPress),如下所示:
mViewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
mDetector.onTouchEvent(motionEvent); // use the custom gesture detector to detect onFling and onLongPress touch events.
return true;
}
});
在重构为 ViewPager2 之前,viewPager 的 onTouchListener 工作正常。我试过这个答案,但它没有用。
任何人都知道为什么会出现这种情况以及我该如何解决?
解决方案
因为ViewPager2是一个ViewGroup,所以最终的目标是里面的recyclerview。没有调用setOnTouchListener是因为recyclerview拦截了事件,先调用了onTouchEvent。
添加自定义 onTouch 逻辑的正确方法是调用
mViewPager.getChildAt(0).setOnTouchListener{...}
推荐阅读
- c# - CS7069:对类型“Route”的引用声称它在 System.Web 中定义,但找不到
- google-chrome-extension - 从下载事件中获取标签 ID
- flutter - 控制 Flutter swiper 的分页
- python - 为什么裸 Python 装饰器(不带 @)不会产生编译器错误?
- sql-server - 将数据存储为 json(或 xml)或使用附加表 - SQL Server
- javascript - m3u8 和 ts url 的查询参数。hls.js
- url - 域/DNS 注入问题 - 诈骗链接似乎来自我的网站
- javascript - 如何从我在 Heroku 上的应用程序获得正确的 JSON 响应?
- php - 创建 Web 表单并与数据库集成?
- javascript - 我如何记住 php laravel 中的下拉值?