当滚动另一个滚动视图时要并行滚动滚动视图

问题描述:

我已经在相同的布局中创建了两个滚动视图。你可以说一个并行滚动视图。我想手动滚动一个滚动视图,作为响应,另一个滚动视图应该以完全相同的方式滚动。两个视图的滚动长度都是相同的。 对于这两个滚动视图,这应该会发生相同的情况。我为此尝试了一个代码。当滚动另一个滚动视图时要并行滚动滚动视图

horizontalScrollViewB.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { 
      @Override 
      public void onScrollChanged() { 
       horizontalScrollViewD.scrollTo(horizontalScrollViewB.getScrollX(), horizontalScrollViewB.getScrollY()); 
      } 
     }); 
     horizontalScrollViewD.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { 
      @Override 
      public void onScrollChanged() { 
       horizontalScrollViewB.scrollTo(horizontalScrollViewD.getScrollX(), horizontalScrollViewD.getScrollY()); 
      } 
     }); 

这里发生了什么是第一个“B”滚动视图它工作正常,但对于“D”滚动视图它创造了滚动问题。 我了解问题,但无法获得解决方案。那么当另一个人正在调用“onScrollChangeListener()”时,我应该怎么做以避免他人的呼叫。

覆盖Horizo​​ntalView类

package com.example.shaby.payshare; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.HorizontalScrollView; 

/** 
* Created by shaby on 3/7/2017. 
*/ 

public class HorizontalScroll extends HorizontalScrollView { 

    private ScrollViewListener scrollViewListener = null; 
    public interface ScrollViewListener { 

     void onScrollChanged(HorizontalScroll scrollView, int x, int y, int oldx, int oldy); 

    } 
    public HorizontalScroll(Context context) { 
     super(context); 
    } 

    public HorizontalScroll(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public HorizontalScroll(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    public void setScrollViewListener(ScrollViewListener scrollViewListener) { 
     this.scrollViewListener = scrollViewListener; 
    } 

    @Override 
    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); 
     } 
    } 
} 

在你所需的类实现接口