【发布时间】:2011-03-31 15:02:17
【问题描述】:
我想在用户向下滚动 >90% 时做一些事情,所以我想我可以像在 ListView 中一样添加一个 onScrollListener。不幸的是,ScrollView 似乎没有类似的方法。有什么办法可以做我想做的事吗?当用户向下滚动大约 90% 时收到通知?
谢谢, 埃里克
【问题讨论】:
标签: android
我想在用户向下滚动 >90% 时做一些事情,所以我想我可以像在 ListView 中一样添加一个 onScrollListener。不幸的是,ScrollView 似乎没有类似的方法。有什么办法可以做我想做的事吗?当用户向下滚动大约 90% 时收到通知?
谢谢, 埃里克
【问题讨论】:
标签: android
这就是我最终要知道用户是否与我的ScrollView 交互的方法:
findViewById(R.id.scrollview).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_SCROLL:
case MotionEvent.ACTION_MOVE:
setScrollState(OnScrollListener.SCROLL_STATE_FLING);
break;
case MotionEvent.ACTION_DOWN:
setScrollState(OnScrollListener.SCROLL_STATE_TOUCH_SCROLL);
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
setScrollState(OnScrollListener.SCROLL_STATE_IDLE);
break;
}
return false;
}
});
【讨论】:
您可以尝试扩展 ScrollView 并覆盖 View#onScrollChanged 并在那里进行检查。您必须扩展 ScrollView,因为 onScrollChanged 是受保护的方法。
【讨论】:
您可以实现 onTouchListener 并使用视图的 getScrollX 和 getScrollY 回调
【讨论】:
如果你想要一个像列表视图一样工作的滚动视图,我可以建议尝试一个水平列表视图库:
https://github.com/sephiroth74/HorizontalVariableListView
它基于原始的ListView,效果很好。
它有它的 OnScrollListener ,即使网站说它支持 Android 2.3 及更高版本,我认为它应该在 API 7 及更高版本上工作(并且进行一些更旧的调整)。
【讨论】: