Search code examples
androidhorizontalscrollview

listening to scroll events horizontalscrollview android


I am trying to listen to the event when the HorizontalScrollView is scrolled. Tried this but it does not print anything.

HorizontalScrollView headerScrollView = new HorizontalScrollView(this);

    headerScrollView.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            Log.i("hv1",event.toString());
            Log.i("hv1","HELLO");
            return false;
        }
    });

The actual problem is, I want to scroll two HorizontalScrollView at a time..ie; both of them need to scroll simultaneously when atleast one of them scrolled. any workaround?

I used the answer below and then tried implementing this but I am not sure how I need to use the methods in the class.

TestHorizontalScrollView headerScrollView = (TestHorizontalScrollView) findViewById(R.id.headerHv); 

Is this the way I need to point to the hsv element in the layout file?


Solution

  • You may want to try creating your own custom class that extends HorizontalScrollView and overriding the onScrollChanged() function as such

    public class TestHorizontalScrollView extends HorizontalScrollView {
    
        public TestHorizontalScrollView(Context context) {
            super(context);
        }
    
    
        @Override
        protected void onScrollChanged(int l, int t, int oldl, int oldt) {
            // TODO Auto-generated method stub
            Log.i("Scrolling", "X from ["+oldl+"] to ["+l+"]");
            super.onScrollChanged(l, t, oldl, oldt);
        }
    
    }
    

    This overriden function will catch all changes to the scroll position even when the view is not being touched. This should keep your scroll views in sync.