Search code examples
androidscrollviewgesture

SimpleOnGestureListener not working for ScrollView


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


Solution

  • 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