Android smoothScrollTo 不调用 onScrollStateChanged

2024-05-22

我在用smoothScrollBy()滚动到 a 中的特定位置ListView。我希望在以下情况时得到通知ListView完成滚动以将其与当前集成onScrollStateChanged()当用户用手指滚动时触发的事件。

目前我正在使用Timer它在平滑滚动持续时间后运行 100 毫秒,但这并不像我希望的那样由事件驱动。


如果您已为列表视图实现了 OnScrollListener,则可以监视 ScrollState 何时发生变化。调用 smoothScrollBy() 时,使用设置为 true 的全局布尔值 (isScrolling),然后在 OnScrollListener 注册 SCROLL_STATE_IDLE 的 ScrollState 后将其设置为 false。

sidebar1.smoothScrollToPositionFromTop(currentPosition, 0, 500);
isScrolling = true;

sidebar1.setOnScrollListener(new OnScrollListener() {

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
    if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
        isScrolling = false;
    }

}

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
        int visibleItemCount, int totalItemCount) {

}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android smoothScrollTo 不调用 onScrollStateChanged 的相关文章

随机推荐