在 Android 上处理多个快速运动检测器

发布于 2024-12-11 04:13:32 字数 702 浏览 1 评论 0原文

基本上我有一个自定义的 TabHost ,它使用 dispatchTouchEvent 来捕获 flings 和更改选项卡。

问题是,现在我有一个带有 ViewPager 的选项卡。

发生的情况是 TabHost 正在捕获来自 ViewPager 的 fling 并更改选项卡。

我尝试检查 super.dispatchTouchEvent 是否已处理触摸事件,但显然,此超级调用始终返回 true。

这是我在 TabHost 中尝试使用的代码:

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        boolean handled = super.dispatchTouchEvent(ev);
        if(!handled) // This is always true... why?
            return mGestureDetector.onTouchEvent(ev);
        return handled;
    }

是否有解决方法可以实现此目的?

如何检测 ViewPager 处理了该事件而不更改选项卡?

谢谢!

Basically I have a custom TabHost that uses dispatchTouchEvent to capture flings and change tabs.

The problem is, now I have a tab with a ViewPager inside of it.

What happens is that the TabHost is capturing the fling from the ViewPager and changing the tab.

I tried to work around with a check of the super.dispatchTouchEvent has handled the touch event, but apparently, this super call ALWAYS returns true.

Here is the code I tried using in my TabHost:

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        boolean handled = super.dispatchTouchEvent(ev);
        if(!handled) // This is always true... why?
            return mGestureDetector.onTouchEvent(ev);
        return handled;
    }

Is there a workarround to make this work?

How can I detect that the ViewPager handled the event and not change the tab?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文