我有一个在
当用户向下滑动时,如果列表在底部,首先
同样地,当用户向上滚动时,首先
到目前为止,我已经完成了以下工作:
日志在正确的时刻触发了,但即使我返回false,
我还尝试将
我该如何让它工作?
ScrollView
中显示评论的ListView
,我想要实现以下功能:当用户向下滑动时,如果列表在底部,首先
ScrollView
应该完全滚动到底部。一旦它完全到达底部,ListView
应该开始滚动。同样地,当用户向上滚动时,首先
ListView
(这里顺序相反!)应该向上滚动,然后ScrollView
开始滚动。到目前为止,我已经完成了以下工作:
listView.setOnTouchListener(new View.OnTouchListener() {
// Setting on Touch Listener for handling the touch inside ScrollView
@Override
public boolean onTouch(View v, MotionEvent event) {
// If going up but the list is already at up, return false indicating we did not consume it.
if(event.getAction() == MotionEvent.ACTION_UP) {
if (listView.getChildCount() == 0 && listView.getChildAt(0).getTop() == 0) {
Log.e("Listview", "At top!");
return false;
}
}
// Similar behaviour but when going down check if we are at the bottom.
if( event.getAction() == MotionEvent.ACTION_DOWN) {
if (listView.getLastVisiblePosition() == listView.getAdapter().getCount() - 1 &&
listView.getChildAt(listView.getChildCount() - 1).getBottom() <= listView.getHeight()) {
Log.e("Listview","At bottom!");
v.getParent().requestDisallowInterceptTouchEvent(false);
return false;
}
}
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});
日志在正确的时刻触发了,但即使我返回false,
ScrollView
也不会移动。我还尝试将
v.getParent().requestDisallowInterceptTouchEvent(false);
添加到语句中,但也没有起作用。我该如何让它工作?