最近遇到一个问题,记录一下。
业务场景:一个复用的可滑动页面,每次进入页面需要重置定位至顶部,实现方式是在页面退出时执行scrollView.scrollTo(0,0)。
问题:快速滚动后,即页面还处于惯性滚动,立即退出页面,再次进入页面,页面位置未重置到顶部。
原因:scrollTo()被惯性滚动效果覆盖,不生效。
处理:由于ScrollView没有提供可以用来停止滚动的方法,只能通过其他方式尝试解决,最后发现调用smothScrollTo()可以打断惯性滚动,又由于需要ScrollView快速重置定位到顶部,所以scrollTo()不能直接替换成smothScrollTo(),而是先执行scrollTo()再执行smothScrollTo(),即
scrollView.scrollTo(0, 0);
scrollView.smoothScrollTo(0, 0);