我的Android应用程序中有一个ListView。列表中的各个视图略小于屏幕大小。
我希望列表始终在屏幕中心显示一个项目,只有一小部分显示在其上方和下方的上一个和下一个项目。
当用户滚动时,我需要将子视图重新定位在位置0或1(取决于它们滚动的方式)。目前我通过在我的onScrollStateChanged方法中调用“setSelectionFromTop”来做到这一点。这是有效的,但过渡是即时的,而不是顺利的。在很多情况下,这是令人震惊和混乱的。
解决此问题的最佳方法是什么?我想动画滚动列表到我想要的位置的过程,但我找不到ListView或其超类中的任何方法,让我直接控制整个列表的滚动位置。
我想我可以使用渐进值y对setSelectionFromTop(int position,int y)进行多次调用来设置动画,但我不知道如何确定y的初始值。有没有办法通过询问指定位置的视图对象来获得它?
我面前的另一个挑战是,我希望动画从列表中删除项目 - 让它消失或向左滑动,然后让周围的视图上下移动以填充空间。使用ListView有一种简单可靠的方法吗?我应该放弃ListView并从头开始将整个事物写成自定义视图吗?
感谢。