Search code examples
androidhorizontalscrollviewandroid-scrollview

Horizontal Scroll View detect long press


I have a HSV, and I'd like to respond to a long click on that view. When I set it's onLongClickListener() it doesn't do much, the callback is not being called.

I assume that the scroll view consumes everything with an onTouch so it could handle the scrolling, but how do I work around it?


Solution

  • You can do this with GestureDetector. This works:

    GestureDetector.OnGestureListener listener = new GestureDetector.SimpleOnGestureListener() {
        @Override
        public void onLongPress(MotionEvent e)
        {
            Toast.makeText(TestXmlActivity.this, "LongClick", Toast.LENGTH_SHORT).show();
        }
    };
    
    final GestureDetector gestureDetector = new GestureDetector(this, listener);
    
    horizontalScrollView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event)
        {
            return gestureDetector.onTouchEvent(event);
        }
    });