Android 未调用 SetNestedScrollingEnabled?

Android SetNestedScrollingEnabled not called?

我有一个嵌套的子滚动视图,它设置为禁用滚动,直到父滚动视图完成向上滚动。设置 childScrollView.setNestedScrollingEnabled(false) 最初有效,并在父项完全向上滚动后重新启用 childScrollView.setNestedScrollingEnabled(true)。但是,虽然这有效,但我想在父级滚动到底部后再次禁用嵌套滚动视图,但它不起作用。有什么想法吗?

MainActivity(片段):

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(片段):

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

以下是我完成此操作的方法。我拦截嵌套的滚动触摸事件,直到父级到达顶部。

响应式滚动视图:

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

主要活动:

@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
}