想要在滚动另一个 ScrollView 时并行滚动一个 ScrollView

Want to scroll a ScrollView parallely when another ScrollView is scrolled

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

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 class

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

按照您的要求实现接口class