You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程终止ListView正在进行的滚动动画?

解决ListView惯性滚动强制停止的问题

针对不同平台,实现方式有所区别,以下是具体方案:

Android 平台

Android 中的 ListView 继承自 AbsListView,可以直接调用内置方法终止滚动:

  • 调用 stopScroll() 方法:这是最直接的方式,能立即终止当前的滚动动画(包括惯性滚动)
    listView.stopScroll();
    
  • 如果 stopScroll() 不生效,也可以通过强制设置当前可见项位置打断滚动:
    int firstVisiblePos = listView.getFirstVisiblePosition();
    listView.setSelection(firstVisiblePos);
    

iOS 平台

iOS 中对应的列表组件是 UITableView,可通过直接设置内容偏移量并关闭动画终止惯性滚动:
Swift 版本:

let currentOffset = tableView.contentOffset
tableView.setContentOffset(currentOffset, animated: false)

Objective-C 版本:

CGPoint currentOffset = tableView.contentOffset;
[tableView setContentOffset:currentOffset animated:NO];

Flutter 跨平台场景

如果使用 Flutter 框架,可通过 ScrollController 控制 ListView 停止滚动:

// 初始化时创建控制器
final ScrollController _scrollController = ScrollController();

// 需要停止滚动时调用
_scrollController.jumpTo(_scrollController.offset);

jumpTo 方法会直接将滚动位置固定为当前偏移量,不带动画,从而打断惯性滚动。

内容的提问来源于stack exchange,提问作者user1354934

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:18:21