想要在滚动另一个 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()".
覆盖 HorizontalView 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
我在同一布局中创建了两个 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()".
覆盖 HorizontalView 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