我正在开发一个具有滚动视图的android应用程序。我从ScrollView覆盖了我的视图,并实现了onScrollChanged方法。当滚动视图滚动并到达底部时,它将加载更多产品并将其添加到scrollvew。我有一个奇怪的问题。第一次加载产品并尝试向上拖动滚动视图时,onScrollChanged永远不会发生。然后我搜索了一下,发现了一些东西:
scrollView.setOnTouchListener(new ListView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
// Disallow ScrollView to intercept touch events.
v.getParent().requestDisallowInterceptTouchEvent(false);
break;
case MotionEvent.ACTION_UP:
// Allow ScrollView to intercept touch events.
v.getParent().requestDisallowInterceptTouchEvent(true);
break;
}
// Handle ListView touch events.
v.onTouchEvent(event);
return true;
}
});
添加此内容后,当我尝试从scrollview的空白区域拖动scrollview时,它将开始调用onScrollChanged,然后再从其他任何地方拖动,则将调用onScrollChanged。我的问题是,为什么它表现得如此?无论触摸事件开始什么,它都应该调用onScrollChanged。希望我能很好地解释我的观点。有什么办法吗?
最佳答案
为什么不在ListView
或GridView
之类的视图中使用endless adapter来实现所需的行为