Android过度滚动ScrollView

时间:2014-05-07 14:20:16

标签: android scrollview android-scrollview

关于ListView中的OverScroll之前我是asked。默认overScroll在许多设备上不起作用(例如:Samsung Galaxy 2,HTC One X)。所以我做了OverScrollListView

但现在需要为ScrollView做同样的事情。我做了顶级过度滚动的技巧(通过在overScrollBy中使用正数)。但是当我试图为底部做同样的事情时(通过在overScrollBy中使用负数),过度滚动ScrollView滚动到顶部位置。

有人能说出原因吗?

P.S。我也试过this。但即使在顶部(或底部)位置滚动条指示器显示在中间某处。 这使用户感到困惑......

1 个答案:

答案 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上分享整个代码。