我希望能够防止用户能够在我的Android ScrollView中滚动,但仍然检测当他们点击滚动视图中的按钮。
我对ScrollView类进行了子类化,并对OnInterceptTouchEvent
和OnTouchEvent
方法进行了一些修改,但似乎不太正确。下面的代码停止了滚动,但似乎禁用了轻击(但不是全部,比如如果你不移动就上下移动,它可以工作,但如果你的手指在轻击时稍微移动,它就不会注册)。我还删除了onInterceptTouchEvent
,它几乎可以正常工作,但当用户移除手指时,scrollview仍然滚动。
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { App.log("onInterceptTouchEvent, with action : " + ev.getAction()); switch(ev.getAction()) { case MotionEvent.ACTION_MOVE: return true; } return super.onInterceptTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent ev) { App.log("onTouchEvent, with action : " + ev.getAction()); switch(ev.getAction()) { case MotionEvent.ACTION_MOVE: return false; } return super.onTouchEvent(ev); }
最后,我发现下面的解决方案正好做到了我所需要的:
@Override
public boolean onTouchEvent(MotionEvent ev)
{
App.log("onTouchEvent, with action : " + ev.getAction());
switch(ev.getAction())
{
case MotionEvent.ACTION_MOVE:
return false;
}
return super.onTouchEvent(ev);
}