我有一个嵌套的子 ScrollView ,它设置为禁用滚动,直到父 ScrollView 完成向上滚动。设置 childScrollView.setNestedScrollingEnabled(false)
最初有效,并在父项完全向上滚动后重新启用 childScrollView.setNestedScrollingEnabled(true)
。但是,虽然这有效,但我想在父级滚动到底部后再次禁用嵌套 ScrollView ,但它不起作用。有什么想法吗?
MainActivity( fragment ):
ResponsiveScrollView parentScroll = (ResponsiveScrollView) findViewById(R.id.parentScroll);
final ScrollView childScroll = (ScrollView) findViewById(R.id.childScroll);
childScroll.setNestedScrollingEnabled(false); // disabled by default
parentScroll.setOnEndScrollListener(new PriorityNestedScrollView.OnEndScrollListener() {
@Override
public void onUpEndScroll() {
Log.i(TAG, "scrolling up has ended"); // successfully fires
childScroll.setNestedScrollingEnabled(true); // working...
}
@Override
public void onDownEndScroll() {
Log.i(TAG, "scrolling down has ended"); // successfully fires
childScroll.setNestedScrollingEnabled(false); // not working...
}
});
ResponsiveScrollView( fragment ):
@Override
protected void onScrollChanged(int x, int y, int oldX, int oldY) {
super.onScrollChanged(x, y, oldX, oldY);
// scroll up ended
if (y >= END) {
if (onEndScrollListener != null) {
onEndScrollListener.onUpEndScroll();
}
}
// scroll down ended
if (y <= START) {
if (onEndScrollListener != null) {
onEndScrollListener.onDownEndScroll();
}
}
}
最佳答案
我是这样实现的。我拦截嵌套的滚动触摸事件,直到父级到达顶部。
响应式 ScrollView :
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (isEnableScrolling()) {
return super.onInterceptTouchEvent(ev);
} else {
return true;
}
}
...
boolean enableScrolling = false // disabled by default
public boolean isEnableScrolling() {
return enableScrolling;
}
public void setEnableScrolling(boolean enableScrolling) {
this.enableScrolling = enableScrolling;
}
主要 Activity :
@Override
public void onUpEndScroll() {
Log.i(TAG, "scrolling up has ended");
parentScroll.setEnableScrolling(true); // enable scrolling
}
@Override
public void onDownEndScroll() {
Log.i(TAG, "scrolling down has ended");
parentScroll.setEnableScrolling(false); // disable scrolling
}
关于Android SetNestedScrollingEnabled 没有调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33685636/