listening to scroll events horizontalscrollview android listening to scroll events horizontalscrollview android android android

listening to scroll events horizontalscrollview android


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.


old question, but maybe helpful. You can do something like this:

scrollOne = (HorizontalScrollView)findViewById(R.id.horizontal_one);scrollTwo = (HorizontalScrollView)findViewById(R.id.horizontal_two);scrollTwo.setOnTouchListener(new OnTouchListener(){    @Override    public boolean onTouch(View view, MotionEvent event) {        // TODO Auto-generated method stub        int scrollX = view.getScrollX();        int scrollY = view.getScrollY();        scrollOne.scrollTo(scrollX, scrollY);                    return false;        }    });


ScrollView with Listener, api < 23

write below in your code

MyHorizontalScrollView scrollView = (MyHorizontalScrollView)view.findViewById(R.id.scrollViewBrowse);        scrollView.setOnScrollChangedListener(new MyHorizontalScrollView.OnScrollChangedListener() {            @Override            public void onScrollChanged(int l, int t, int oldl, int oldt) {            }        });

MyHorizontalScrollView

   public class MyHorizontalScrollView extends ScrollView {        public OnScrollChangedListener mOnScrollChangedListener;        public MyHorizontalScrollView(Context context) {            super(context);        }        public MyHorizontalScrollView(Context context, AttributeSet attrs) {            super(context, attrs);        }        public MyHorizontalScrollView(Context context, AttributeSet attrs, int defStyleAttr) {            super(context, attrs, defStyleAttr);        }        @Override        protected void onScrollChanged(int l, int t, int oldl, int oldt) {            super.onScrollChanged(l, t, oldl, oldt);            if (mOnScrollChangedListener != null) {                mOnScrollChangedListener.onScrollChanged(l, t, oldl, oldt);            }        }        public void setOnScrollChangedListener(OnScrollChangedListener onScrollChangedListener){            this.mOnScrollChangedListener = onScrollChangedListener;        }        public interface OnScrollChangedListener{            void onScrollChanged(int l, int t, int oldl, int oldt);        }    }

* Xml file *

<MyHorizontalScrollView        android:id="@+id/scrollViewBrowse"        android:layout_width="match_parent"        android:layout_height="fill_parent"        android:background="@drawable/backgroung"        android:padding="10dp"> </MyHorizontalScrollView>