【问题标题】:Android SetNestedScrollingEnabled not called?Android SetNestedScrollingEnabled 未调用?
【发布时间】:2015-11-13 03:51:18
【问题描述】:

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

MainActivity (sn-p):

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

响应式滚动视图(sn-p):

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

【问题讨论】:

    标签: android android-scrollview


    【解决方案1】:

    这就是我如何做到这一点的。我拦截嵌套的滚动触摸事件,直到父级到达顶部。

    响应式滚动视图:

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

    【讨论】:

      猜你喜欢
      • 2016-11-05
      • 2014-06-29
      • 2013-01-18
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多