【发布时间】:2016-07-29 18:48:31
【问题描述】:
我有两个水平的scrollview,并希望它们始终保持在相同的位置/距离。如果用户滚动一个,则需要以编程方式滚动另一个。挑战在于,将发生无限循环。一个人会举起另一个人,另一个人会先举起。如何设置状态,指示用户启动的滚动仍在进行中?所以其他scrollview不应该执行程序化滚动。
其中一个是HorizontalScrollView,另一个是RecyclerView。
尝试了以下解决方案,但没有任何成功:
horizontalScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
if (programmaticScrollEnable) {
programmaticScrollEnable = false;
// do programmatic scrolling here
programmaticScrollEnable = true;
}
}
});
试图在onScrollStateChanged 方法中改变状态:
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
/*if (newState == RecyclerView.SCROLL_STATE_IDLE) {
MainActivity.programmaticScrollEnable = true;
}*/
}
【问题讨论】:
标签: android scroll scrollview android-scrollview horizontal-scrolling