SimpleOnGestureListener 不适用于 ScrollView

发布于 2024-11-30 18:53:36 字数 284 浏览 1 评论 0原文

我有一个屏幕,其中有页眉、ScrollView 内的 TextView 和页脚。我必须使用 ScrollView,因为 TextView 中的文本也可能很长。

现在,当我在此屏幕上使用 SimpleOnGestureListener 时。它不适用于 ScrollView 部分。删除 ScrollView 一切正常。但对于长文本的情况,有些文本会被遗漏。

我想在 SimpleOnGestureListener 中使用 onFling 和 onDoubleTap 。

请指教。

问候, 香卡

I have a screen where I have a header, a TextView inside a ScrollView and footer. I have to use ScrollView as the Text in the TextView can be long also.

Now when I am using SimpleOnGestureListener for this screen. It is not working for the ScrollView section. Removing the ScrollView everything working fine. But for the case of long text, some text are getting missed.

I want to use onFling and onDoubleTap in SimpleOnGestureListener.

Please advise.

Regards,
Shankar

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

好倦 2024-12-07 18:53:36

我得到了这个问题的解决方案

在您的 Activity 类中添加以下方法

@Override
public boolean dispatchTouchEvent(MotionEvent ev){
    super.dispatchTouchEvent(ev);
    return gestureScanner.onTouchEvent(ev);
} 

正如以下链接中所建议的:

http://groups.google.com/group/android-developers/browse_thread/thread/9fdfb03d0959e299

I got the solution for this issu

Add following method in the your Activity class

@Override
public boolean dispatchTouchEvent(MotionEvent ev){
    super.dispatchTouchEvent(ev);
    return gestureScanner.onTouchEvent(ev);
} 

As suggested in the below link:

http://groups.google.com/group/android-developers/browse_thread/thread/9fdfb03d0959e299

西瑶 2024-12-07 18:53:36

您必须创建一个自定义 ScrollView 对象并覆盖它的 onTouchEvents 来检查您的手势。下面的代码对此进行了演示。

public class GestureScrollView extends ScrollView {
    GestureDetector myGesture;

    public GestureScrollView(Context context, GestureDetector gest) {
        super(context);
        myGesture = gest;
    }

    public GestureScrollView(Context context) {
        super(context);
    }

    public GestureScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        if (myGesture.onTouchEvent(ev))
            return true;
        else
            return super.onTouchEvent(ev);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (myGesture.onTouchEvent(ev))
            return true;
        else
            return super.onInterceptTouchEvent(ev);
        }
    }

如果您遇到任何问题,请告诉我。 :)

-扎伊德

You have to create a custom ScrollView object and override it's onTouchEvents to also check for your gestures. It's demonstrated in the following code.

public class GestureScrollView extends ScrollView {
    GestureDetector myGesture;

    public GestureScrollView(Context context, GestureDetector gest) {
        super(context);
        myGesture = gest;
    }

    public GestureScrollView(Context context) {
        super(context);
    }

    public GestureScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        if (myGesture.onTouchEvent(ev))
            return true;
        else
            return super.onTouchEvent(ev);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (myGesture.onTouchEvent(ev))
            return true;
        else
            return super.onInterceptTouchEvent(ev);
        }
    }

Let me know if you run into any issues. :)

-Zaid

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文