SimpleOnGestureListener不适用于ScrollView

时间:2011-08-21 10:43:14

标签: android scrollview gesture

我有一个屏幕,我有一个标题,一个ScrollView和页脚内的TextView。我必须使用ScrollView,因为TextView中的Text也可以很长。

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

我想在SimpleOnGestureListener中使用onFling和onDoubleTap。

请告知。

此致 香卡

2 个答案:

答案 0 :(得分:13)

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

在您的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

答案 1 :(得分:3)

您必须创建一个自定义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);
        }
    }

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

-Zaid