【发布时间】:2016-03-03 13:55:38
【问题描述】:
我的最终目标是在特定位置停止滚动,以便将正在查看的对象完全显示出来,而我想出的解决方案是在释放触摸时检查视图的 scrollX 位置。我确实遇到了动量问题,因为在捕捉到触摸事件后,由于滚动速度,滚动仍然可以继续,我使用 MotionEvent.ACTION_CANCEL 解决了这个问题,我对此并不满意,因为 scrollTo 在视觉上令人愉悦,但是 MotionEvent .ACTION_CANCEL 取消它的效果。
我的问题是,有没有更优雅的方法来做到这一点?理想的情况是我可以简单地指示我的 ScrollView 没有动量/速度。
myView.setOnTouchListener(new HorizontalScrollView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
event.setAction(MotionEvent.ACTION_CANCEL);
int x = myView.getScrollX();
if (x < 150)
myView.scrollTo(0,0);
else if (x<450)
myView.scrollTo(300,0);
else
myView.scrollTo(600,0);
}
return false;
}
});
【问题讨论】:
标签: android scrollview android-scrollview