但现在需要为ScrollView
做同样的事情。我做了顶级过度滚动的技巧(通过在overScrollBy
中使用正数)。但是当我试图为底部做同样的事情时(通过在overScrollBy
中使用负数),过度滚动ScrollView滚动到顶部位置。
有人能说出原因吗?
P.S。我也试过this。但即使在顶部(或底部)位置滚动条指示器显示在中间某处。 这使用户感到困惑......
答案 0 :(得分:1)
好的,我想我做到了。
但它真的很奇怪。
我在ACTION_MOVE中调用了过度滚动的方法:
private void pullDown(int deltaY, int lastY) {
overScrollBy(0, mSlowEffect ? (int)getOverScrollYWithSlow(deltaY) : deltaY, 0, lastY, 5, 5, 0, mMaxYOverscrollDistance, true);
}
对于过度滚动的ListView,我只需将deltaY设置为pullDown(lastScroll, 0);
它适用于:顶部和底部过度滚动。
但对于ScrollView,它不适用于底层过度滚动。所以我们应该向此方法发送当前的scrollY位置,例如pullDown(lastScroll , lastY);
如果有人感兴趣,我会在Github上分享整个代码。