例如图上效果:
第一排是能自由左右移动的ScrollView,第二行是自由移动的ScrollView,但是呢 需求是移动第二个ScrollView需要我们同时第一个ScrollView同步移动!怎么做呢,上代码:
第一:写个接口ScrollViewListener!!
public interface ScrollViewListener { void onScrollChanged(MyScrollView scrollView, int x, int y, int oldx, int oldy); }第二:
重写 HorizontalScrollview(或者ScrollView)
public class MyScrollView extends HorizontalScrollViewrollView { private ScrollViewListener scrollViewListener = null; public MyScrollView(Context context) { super(context); } public MyScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public void setScrollViewListener(ScrollViewListener scrollViewListener) { this.scrollViewListener = scrollViewListener; } protected void onScrollChanged(int x, int y, int oldx, int oldy) { super.onScrollChanged(x, y, oldx, oldy); if (scrollViewListener != null) { scrollViewListener.onScrollChanged(this, x, y, oldx, oldy); } } }
第三步:
某个Activity 实现接口,并实现onScrollChanged方法,
public class TestActivity implements ScrollViewListener
实例化你的Scrollview , 然后 注册监听器:
myscrollview = (MyScrollView) findViewById(R.id.scrollview_score_vertical);
myscrollview.setScrollViewListener(this);
接口方法实现:
public void onScrollChanged(MyScrollView scrollView, int x, int y,
int oldx, int oldy) {
if (scrollView == myscrollview ) {
myscrollview .scrollTo(x, y); // 这里是拖动myscrollview 实现scrollview滚动
你的scrollview(或者listivew).scrollTo(x, y);// 这里写 需要跟myscrollview同步滚动的scrollview或者listview即可!
}
}