为什么Android ScrollView在其子节点小于屏幕时调用onScrollChanged()?

时间:2013-02-27 08:26:39

标签: android android-layout android-ui android-scrollview

我有一个ScrollView,其中RelativeLayout是唯一的孩子。 最近我注意到了方法:

@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {}
即使子高度低于ScrollView高度,也会调用

,如下所示:

这指的是我的ScrollView,而rl指的是RelativeLayout

这是正常行为还是我错过了什么?

修改 我不断添加和删除RelativeLayout中的视图,因此每次禁用滚动/触摸等都不是一个好的解决方案。

我目前的修复是检查滚动是否实际改变了任何内容,如果没有,我只是忽略它:

    // in case no actual scroll has occurred - just return.
    if (t == oldt && l == oldl) {
        return;
    }

1 个答案:

答案 0 :(得分:3)

这是正常行为

如果要停止ScrollView滚动,则必须尝试此

scroll.setEnabled(false); 
scroll.setFocusable(false); 
scroll.setHorizontalScrollBarEnabled(false); 
scroll.setVerticalScrollBarEnabled(false);

希望这样可行